From 62e2d6d68c03bdd3f4908c7b0d3bd3e99d1f0269 Mon Sep 17 00:00:00 2001 From: Daito Manabe Date: Sat, 5 Sep 2026 07:07:58 +0900 Subject: [PATCH] Modernize examples for openFrameworks 0.12.1 --- .github/workflows/build.yml | 50 + .gitignore | 3 + CONTRIBUTORS.md | 32 + LICENSES.md | 26 + README.md | 108 ++ example-bvh/LICENSE | 4 +- example-bvh/Makefile | 10 + example-bvh/Project.xcconfig | 85 +- example-bvh/addons.make | 1 + example-bvh/config.make | 3 + .../example-bvh.xcodeproj/project.pbxproj | 947 +++++++----------- .../xcschemes/example-bvh Debug.xcscheme | 104 ++ .../xcschemes/example-bvh Release.xcscheme | 104 ++ example-bvh/of.entitlements | 24 + example-bvh/src/main.cpp | 20 +- example-bvh/src/testApp.cpp | 31 +- example-bvh/src/testApp.h | 32 +- example-pen-graphics/LICENSE | 4 +- example-pen-graphics/Makefile | 10 + example-pen-graphics/Project.xcconfig | 85 +- example-pen-graphics/addons.make | 1 + example-pen-graphics/config.make | 3 + .../project.pbxproj | 947 +++++++----------- .../example-pen-graphics Debug.xcscheme | 104 ++ .../example-pen-graphics Release.xcscheme | 104 ++ example-pen-graphics/of.entitlements | 24 + example-pen-graphics/src/main.cpp | 22 +- example-pen-graphics/src/testApp.cpp | 166 +-- example-pen-graphics/src/testApp.h | 32 +- example-sync-sound/LICENSE | 4 +- example-sync-sound/Makefile | 10 + example-sync-sound/Project.xcconfig | 85 +- example-sync-sound/addons.make | 1 + example-sync-sound/config.make | 3 + .../project.pbxproj | 947 +++++++----------- .../example-sync-sound Debug.xcscheme | 104 ++ .../example-sync-sound Release.xcscheme | 104 ++ example-sync-sound/of.entitlements | 24 + example-sync-sound/src/main.cpp | 20 +- example-sync-sound/src/testApp.cpp | 141 ++- example-sync-sound/src/testApp.h | 38 +- marching-cubes/Makefile | 10 + .../MarchingCubes.xcodeproj/project.pbxproj | 704 ------------- .../contents.xcworkspacedata | 7 - marching-cubes/Project.xcconfig | 85 +- marching-cubes/README.md | 9 +- marching-cubes/addons.make | 2 + marching-cubes/config.make | 3 + .../marching-cubes.xcodeproj/project.pbxproj | 427 ++++++++ .../xcschemes/marching-cubes Debug.xcscheme | 104 ++ .../xcschemes/marching-cubes Release.xcscheme | 104 ++ marching-cubes/of.entitlements | 24 + marching-cubes/src/main.cpp | 20 +- marching-cubes/src/testApp.cpp | 80 +- marching-cubes/src/testApp.h | 42 +- motion-visualization/Makefile | 10 + .../project.pbxproj | 573 ----------- .../contents.xcworkspacedata | 7 - motion-visualization/Project.xcconfig | 85 +- motion-visualization/README.md | 2 + motion-visualization/addons.make | 1 + motion-visualization/config.make | 3 + .../project.pbxproj | 358 +++++++ .../motion-visualization Debug.xcscheme | 104 ++ .../motion-visualization Release.xcscheme | 104 ++ motion-visualization/of.entitlements | 24 + motion-visualization/src/main.cpp | 20 +- motion-visualization/src/testApp.cpp | 121 ++- motion-visualization/src/testApp.h | 39 +- ofxBvh/LICENSE | 4 +- ofxBvh/src/ofxBvh.cpp | 562 +++++++---- ofxBvh/src/ofxBvh.h | 53 +- particle-motion-example/LICENSE | 4 +- particle-motion-example/Makefile | 10 + particle-motion-example/Project.xcconfig | 85 +- particle-motion-example/addons.make | 1 + particle-motion-example/config.make | 3 + particle-motion-example/of.entitlements | 24 + .../project.pbxproj | 921 +++++++---------- .../particle-motion-example Debug.xcscheme | 104 ++ .../particle-motion-example Release.xcscheme | 104 ++ particle-motion-example/src/main.cpp | 23 +- particle-motion-example/src/testApp.cpp | 174 ++-- particle-motion-example/src/testApp.h | 32 +- scripts/LICENSE | 19 + scripts/build-all.sh | 39 + scripts/validate-xcode-projects.sh | 39 + tests/ofxBvh-boundary/LICENSE | 19 + tests/ofxBvh-boundary/Makefile | 9 + tests/ofxBvh-boundary/addons.make | 2 + tests/ofxBvh-boundary/config.make | 2 + .../fixtures/channel-count-mismatch.bvh | 10 + .../fixtures/invalid-channel-suffix.bvh | 10 + .../fixtures/malformed-header-prefix.bvh | 10 + .../fixtures/malformed-motion-header.bvh | 10 + .../fixtures/motion-in-joint-name.bvh | 10 + .../fixtures/short-channel-name.bvh | 10 + .../fixtures/trailing-hierarchy-data.bvh | 11 + .../fixtures/truncated-hierarchy.bvh | 8 + .../ofxBvh-boundary/openFrameworks-Info.plist | 34 + tests/ofxBvh-boundary/src/main.cpp | 114 +++ third_party/ofxMarchingCubes/LICENSE.txt | 501 +++++++++ third_party/ofxMarchingCubes/README.md | 29 + third_party/ofxMarchingCubes/src/Tables.h | 317 ++++++ third_party/ofxMarchingCubes/src/ofxMCTypes.h | 28 + .../ofxMarchingCubes/src/ofxMarchingCubes.cpp | 536 ++++++++++ .../ofxMarchingCubes/src/ofxMarchingCubes.h | 97 ++ 107 files changed, 7323 insertions(+), 4284 deletions(-) create mode 100644 .github/workflows/build.yml create mode 100644 .gitignore create mode 100644 CONTRIBUTORS.md create mode 100644 LICENSES.md create mode 100644 README.md create mode 100644 example-bvh/Makefile create mode 100644 example-bvh/addons.make create mode 100644 example-bvh/config.make create mode 100644 example-bvh/example-bvh.xcodeproj/xcshareddata/xcschemes/example-bvh Debug.xcscheme create mode 100644 example-bvh/example-bvh.xcodeproj/xcshareddata/xcschemes/example-bvh Release.xcscheme create mode 100644 example-bvh/of.entitlements create mode 100644 example-pen-graphics/Makefile create mode 100644 example-pen-graphics/addons.make create mode 100644 example-pen-graphics/config.make create mode 100644 example-pen-graphics/example-pen-graphics.xcodeproj/xcshareddata/xcschemes/example-pen-graphics Debug.xcscheme create mode 100644 example-pen-graphics/example-pen-graphics.xcodeproj/xcshareddata/xcschemes/example-pen-graphics Release.xcscheme create mode 100644 example-pen-graphics/of.entitlements create mode 100644 example-sync-sound/Makefile create mode 100644 example-sync-sound/addons.make create mode 100644 example-sync-sound/config.make create mode 100644 example-sync-sound/example-sync-sound.xcodeproj/xcshareddata/xcschemes/example-sync-sound Debug.xcscheme create mode 100644 example-sync-sound/example-sync-sound.xcodeproj/xcshareddata/xcschemes/example-sync-sound Release.xcscheme create mode 100644 example-sync-sound/of.entitlements create mode 100644 marching-cubes/Makefile delete mode 100644 marching-cubes/MarchingCubes.xcodeproj/project.pbxproj delete mode 100644 marching-cubes/MarchingCubes.xcodeproj/project.xcworkspace/contents.xcworkspacedata create mode 100644 marching-cubes/addons.make create mode 100644 marching-cubes/config.make create mode 100644 marching-cubes/marching-cubes.xcodeproj/project.pbxproj create mode 100644 marching-cubes/marching-cubes.xcodeproj/xcshareddata/xcschemes/marching-cubes Debug.xcscheme create mode 100644 marching-cubes/marching-cubes.xcodeproj/xcshareddata/xcschemes/marching-cubes Release.xcscheme create mode 100644 marching-cubes/of.entitlements create mode 100644 motion-visualization/Makefile delete mode 100644 motion-visualization/MotionVisualization.xcodeproj/project.pbxproj delete mode 100644 motion-visualization/MotionVisualization.xcodeproj/project.xcworkspace/contents.xcworkspacedata create mode 100644 motion-visualization/addons.make create mode 100644 motion-visualization/config.make create mode 100644 motion-visualization/motion-visualization.xcodeproj/project.pbxproj create mode 100644 motion-visualization/motion-visualization.xcodeproj/xcshareddata/xcschemes/motion-visualization Debug.xcscheme create mode 100644 motion-visualization/motion-visualization.xcodeproj/xcshareddata/xcschemes/motion-visualization Release.xcscheme create mode 100644 motion-visualization/of.entitlements create mode 100644 particle-motion-example/Makefile create mode 100644 particle-motion-example/addons.make create mode 100644 particle-motion-example/config.make create mode 100644 particle-motion-example/of.entitlements create mode 100644 particle-motion-example/particle-motion-example.xcodeproj/xcshareddata/xcschemes/particle-motion-example Debug.xcscheme create mode 100644 particle-motion-example/particle-motion-example.xcodeproj/xcshareddata/xcschemes/particle-motion-example Release.xcscheme create mode 100644 scripts/LICENSE create mode 100755 scripts/build-all.sh create mode 100755 scripts/validate-xcode-projects.sh create mode 100644 tests/ofxBvh-boundary/LICENSE create mode 100644 tests/ofxBvh-boundary/Makefile create mode 100644 tests/ofxBvh-boundary/addons.make create mode 100644 tests/ofxBvh-boundary/config.make create mode 100644 tests/ofxBvh-boundary/fixtures/channel-count-mismatch.bvh create mode 100644 tests/ofxBvh-boundary/fixtures/invalid-channel-suffix.bvh create mode 100644 tests/ofxBvh-boundary/fixtures/malformed-header-prefix.bvh create mode 100644 tests/ofxBvh-boundary/fixtures/malformed-motion-header.bvh create mode 100644 tests/ofxBvh-boundary/fixtures/motion-in-joint-name.bvh create mode 100644 tests/ofxBvh-boundary/fixtures/short-channel-name.bvh create mode 100644 tests/ofxBvh-boundary/fixtures/trailing-hierarchy-data.bvh create mode 100644 tests/ofxBvh-boundary/fixtures/truncated-hierarchy.bvh create mode 100644 tests/ofxBvh-boundary/openFrameworks-Info.plist create mode 100644 tests/ofxBvh-boundary/src/main.cpp create mode 100644 third_party/ofxMarchingCubes/LICENSE.txt create mode 100644 third_party/ofxMarchingCubes/README.md create mode 100644 third_party/ofxMarchingCubes/src/Tables.h create mode 100644 third_party/ofxMarchingCubes/src/ofxMCTypes.h create mode 100644 third_party/ofxMarchingCubes/src/ofxMarchingCubes.cpp create mode 100644 third_party/ofxMarchingCubes/src/ofxMarchingCubes.h diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 0000000..77a6a3d --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,50 @@ +name: Build openFrameworks 0.12.1 + +on: + push: + branches: [master] + pull_request: + workflow_dispatch: + +permissions: + contents: read + +concurrency: + group: openframeworks-${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + +jobs: + macos: + name: macOS + runs-on: macos-14 + timeout-minutes: 45 + + env: + OF_URL: https://github.com/openframeworks/openFrameworks/releases/download/0.12.1/of_v0.12.1_osx_release.tar.gz + OF_SHA256: e4a2dd6e75805320aac905f9f82f7b85e67a8b799137d47f35d40f7c4c195c9b + + steps: + - name: Check out repository + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 + + - name: Validate Xcode project structure + run: ./scripts/validate-xcode-projects.sh + + - name: Cache openFrameworks 0.12.1 + id: cache-openframeworks + uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0 + with: + path: ${{ runner.temp }}/of_v0.12.1_osx_release + key: openframeworks-0.12.1-macos-${{ runner.arch }} + + - name: Download verified openFrameworks release + if: steps.cache-openframeworks.outputs.cache-hit != 'true' + shell: bash + run: | + OF_ARCHIVE="${RUNNER_TEMP}/of_v0.12.1_osx_release.tar.gz" + curl --fail --location --retry 3 --output "$OF_ARCHIVE" "$OF_URL" + echo "$OF_SHA256 $OF_ARCHIVE" | shasum --algorithm 256 --check + tar --extract --gzip --file "$OF_ARCHIVE" --directory "${RUNNER_TEMP}" + + - name: Build all applications and run regression tests + run: ./scripts/build-all.sh "${RUNNER_TEMP}/of_v0.12.1_osx_release" diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..b98ce10 --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +**/obj/ +tests/**/bin/ +.DS_Store diff --git a/CONTRIBUTORS.md b/CONTRIBUTORS.md new file mode 100644 index 0000000..d4dd01a --- /dev/null +++ b/CONTRIBUTORS.md @@ -0,0 +1,32 @@ +# Contributors and attribution + +This file complements, and does not replace, the repository's Git history and +the copyright and license notices in each project. + +- **Daito Manabe** initiated the perfume-dev project and continues to steward + its repositories. For the Perfume “Global Site Project,” the Agency for + Cultural Affairs records his work in planning, direction, and programming. +- **Satoru Higa** created and maintained core parts of the original + openFrameworks examples and `ofxBvh`, as recorded in the 2012 commit history. +- **Atsushi Tadokoro** authored `motion-visualization` and `marching-cubes`. + His original README and MIT license notices are retained in both directories. +- **Perfume Dev Team** is the publication identity retained in the original + 2012 commits and acknowledged in the first-party license files. +- **Morimasa Aketa** identified the end-of-motion out-of-range access and + proposed its correction in + [pull request #2](https://github.com/perfume-dev/example-openFrameworks/pull/2). + The maintained player includes that boundary fix and regression coverage. +- **Yung-Luen Lan** documented the historical data layout in + [pull request #1](https://github.com/perfume-dev/example-openFrameworks/pull/1). + The current setup guide carries that useful information forward for modern + openFrameworks without retaining obsolete Xcode instructions. +- **Rui Madeira** wrote the vendored `ofxMarchingCubes` implementation, which + **Greg Borenstein** adapted for openFrameworks. Their notices and LGPL terms + are retained with the source. + +The official +[Agency for Cultural Affairs project record](https://www.bunka.go.jp/j-mediaarts-festival/award/single/perfume_global_site_project/index.html) +lists the broader creative and technical team behind the Perfume “Global Site +Project,” including MIKIKO, Yasutaka Nakata, Satoshi Horii, Hiroyasu Kimura, +2bit, Daisuke Nakahama, Kentaro Mito, Hiroyuki Hori, the planning organisations, +and the project's production and legal supporters. diff --git a/LICENSES.md b/LICENSES.md new file mode 100644 index 0000000..30cf57a --- /dev/null +++ b/LICENSES.md @@ -0,0 +1,26 @@ +# License index + +This repository contains separately licensed applications, an addon, and a +vendored dependency. This index is informational: it does not replace the +license text in each directory and does not relicense the repository as a +single combined work. + +| Directory | License | Copyright notice | +| --- | --- | --- | +| `example-bvh` | [MIT](example-bvh/LICENSE) | Copyright (c) 2012 Daito Manabe; originally published under the Perfume Dev Team name | +| `example-sync-sound` | [MIT](example-sync-sound/LICENSE) | Copyright (c) 2012 Daito Manabe; originally published under the Perfume Dev Team name | +| `example-pen-graphics` | [MIT](example-pen-graphics/LICENSE) | Copyright (c) 2012 Daito Manabe; originally published under the Perfume Dev Team name | +| `particle-motion-example` | [MIT](particle-motion-example/LICENSE) | Copyright (c) 2012 Daito Manabe; originally published under the Perfume Dev Team name | +| `motion-visualization` | [MIT](motion-visualization/LICENSE) | Copyright (c) 2012 Atsushi Tadokoro | +| `marching-cubes` | [MIT](marching-cubes/LICENSE) | Copyright (c) 2012 Atsushi Tadokoro | +| `ofxBvh` | [MIT](ofxBvh/LICENSE) | Copyright (c) 2012 Daito Manabe; originally published under the Perfume Dev Team name | +| `scripts` | [MIT](scripts/LICENSE) | Copyright (c) 2026 Daito Manabe | +| `tests/ofxBvh-boundary` | [MIT](tests/ofxBvh-boundary/LICENSE) | Copyright (c) 2026 Daito Manabe | +| `third_party/ofxMarchingCubes` | [LGPL-2.1-or-later](third_party/ofxMarchingCubes/LICENSE.txt) | Copyright (c) 2009 Rui Madeira; adapted by Greg Borenstein | + +Follow each linked `LICENSE` file for the complete MIT terms. The +vendored marching-cubes source retains notices in its source files and the +complete LGPL terms in +[`third_party/ofxMarchingCubes/LICENSE.txt`](third_party/ofxMarchingCubes/LICENSE.txt). +Files outside these component directories should not be assumed to inherit a +different component's license solely because they share this repository. diff --git a/README.md b/README.md new file mode 100644 index 0000000..7f93fa0 --- /dev/null +++ b/README.md @@ -0,0 +1,108 @@ +# Perfume Global Site — openFrameworks examples + +[![Build openFrameworks 0.12.1](https://github.com/perfume-dev/example-openFrameworks/actions/workflows/build.yml/badge.svg?branch=master)](https://github.com/perfume-dev/example-openFrameworks/actions/workflows/build.yml) + +This repository contains openFrameworks examples created around the 2012 +Perfume “Global Site Project.” It is maintained for +[openFrameworks 0.12.1](https://openframeworks.cc/download/), the current +stable release. The original visual character and data formats are preserved +while the application lifecycle, APIs, project files, dependency handling, and +BVH playback safety have been updated. + +## Stewardship + +The [perfume-dev organization](https://github.com/perfume-dev) was founded by +Daito Manabe in 2012 and has remained under his stewardship since launch. He +continues to oversee maintenance of this repository with project collaborators. + +Perfume is a Japanese artist group. Manabe's documented collaboration with +Perfume goes back to the +[2010 Tokyo Dome performance](https://daito.ws/archive/perfume_12345678910/), +which credits his programming. The later +[2020 “Time Warp” project](https://daito.ws/en/archive/perfume-imaginary-museum-time-warp-perfume-p-o-p-festival/) +credits him with creative and technical direction and sound-effect design. +Across multiple Perfume projects since 2010, his roles have included creative +direction, technical direction, programming, and sound-related design, +including sound-effect design. For the 2012 Global Site Project, the +[Agency for Cultural Affairs award record](https://www.bunka.go.jp/j-mediaarts-festival/award/single/perfume_global_site_project/index.html) +credits Manabe with planning, direction, and programming, and records the many +artists, choreographers, designers, programmers, engineers, producers, and +supporters who made the project possible. + +This stewardship statement does not replace individual authorship. Historical +and third-party credits are preserved in [CONTRIBUTORS.md](CONTRIBUTORS.md), +the per-example README and LICENSE files, the Git history, and vendored source +notices. + +## Included projects + +| Directory | Purpose | +| --- | --- | +| `example-bvh` | Standalone BVH playback and three bundled sample motions | +| `example-sync-sound` | Synchronised BVH, audio, and motion-trail rendering | +| `example-pen-graphics` | Ribbon-like graphics generated from skeletal motion | +| `particle-motion-example` | Particle forces driven by tracked joints | +| `motion-visualization` | Long-exposure-style joint trajectories | +| `marching-cubes` | A metaball surface driven by skeletal endpoints | +| `ofxBvh` | The bundled BVH loader and player used by every example | + +## Build with openFrameworks 0.12.1 + +Download the official +[openFrameworks 0.12.1 macOS release](https://github.com/openframeworks/openFrameworks/releases/tag/0.12.1), +then place this repository at the standard openFrameworks application depth: + +```sh +export OF_ROOT=/absolute/path/to/of_v0.12.1_osx_release +git clone https://github.com/perfume-dev/example-openFrameworks.git \ + "$OF_ROOT/apps/myApps/example-openFrameworks" +cd "$OF_ROOT/apps/myApps/example-openFrameworks" +./scripts/build-all.sh "$OF_ROOT" +``` + +The script builds all six applications in Release mode and runs the `ofxBvh` +boundary/malformed-input and marching-cubes lifecycle regression tests. An +individual application can be built with, for example: + +```sh +make -C example-bvh Release OF_ROOT="$OF_ROOT" +open example-bvh/bin/example-bvh.app +``` + +The checked-in Xcode projects were regenerated from the openFrameworks 0.12.1 +macOS template. They use relative paths and expect the repository layout shown +above. If you put the repository elsewhere, use the Makefiles with an explicit +`OF_ROOT`, or update the projects with the openFrameworks Project Generator. + +## Motion and audio data + +`example-bvh` is ready to run with its bundled `A_test.bvh`, `B_test.bvh`, and +`C_test.bvh` files. The other five applications first look for the historical +Perfume Global Site assets in each application's `bin/data` directory: + +```text +bin/data/ +├── Perfume_globalsite_sound.wav +└── bvhfiles/ + ├── aachan.bvh + ├── kashiyuka.bvh + └── nocchi.bvh +``` + +Those original full assets are not duplicated in this repository. When they +are absent, the maintained examples fall back to the bundled A/B/C motion +samples and a silent internal clock, so every application can still be built +and explored from a clean checkout. Startup logs identify motion fallback, and +an on-screen notice identifies silent-clock mode. + +## Dependencies and licenses + +`ofxBvh` is kept in this repository and referenced as a local addon. The +historical `ofxMarchingCubes` source required by `marching-cubes` is vendored +with provenance and its LGPL-2.1-or-later notice under +[`third_party/ofxMarchingCubes`](third_party/ofxMarchingCubes/README.md). +Application and addon license terms remain in their respective directories; +the two examples by Atsushi Tadokoro retain their original copyright and MIT +license notices. See [LICENSES.md](LICENSES.md) for the component-by-component +license index; the repository does not apply one blanket license to every +directory. diff --git a/example-bvh/LICENSE b/example-bvh/LICENSE index 1724108..56e2ae4 100644 --- a/example-bvh/LICENSE +++ b/example-bvh/LICENSE @@ -1,4 +1,6 @@ -Copyright (c) 2012 Perfume Dev Team +Copyright (c) 2012 Daito Manabe + +Originally published under the Perfume Dev Team name. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the diff --git a/example-bvh/Makefile b/example-bvh/Makefile new file mode 100644 index 0000000..14403c4 --- /dev/null +++ b/example-bvh/Makefile @@ -0,0 +1,10 @@ +# Attempt to load project-specific configuration. +ifneq ($(wildcard config.make),) + include config.make +endif + +ifndef OF_ROOT + OF_ROOT=../../../.. +endif + +include $(OF_ROOT)/libs/openFrameworksCompiled/project/makefileCommon/compile.project.mk diff --git a/example-bvh/Project.xcconfig b/example-bvh/Project.xcconfig index c10b9e5..7c338e1 100644 --- a/example-bvh/Project.xcconfig +++ b/example-bvh/Project.xcconfig @@ -1,9 +1,88 @@ //THE PATH TO THE ROOT OF OUR OF PATH RELATIVE TO THIS PROJECT. //THIS NEEDS TO BE DEFINED BEFORE CoreOF.xcconfig IS INCLUDED -OF_PATH = ../../.. +OF_PATH = ../../../.. //THIS HAS ALL THE HEADER AND LIBS FOR OF CORE -#include "../../../libs/openFrameworksCompiled/project/osx/CoreOF.xcconfig" +#include "../../../../libs/openFrameworksCompiled/project/osx/CoreOF.xcconfig" -OTHER_LDFLAGS = $(OF_CORE_LIBS) +//UNCOMMENT BELOW TO ENABLE C++ 17 and std::filesystem +CLANG_CXX_LANGUAGE_STANDARD = c++23 +CLANG_C_LANGUAGE_STANDARD = c17 +MACOSX_DEPLOYMENT_TARGET = 11.5 + +// App Settings +PRODUCT_NAME = $(TARGET_NAME) +PRODUCT_NAME[config=Debug] = $(TARGET_NAME)Debug +PRODUCT_BUNDLE_IDENTIFIER = cc.openFrameworks.${TARGET_NAME:rfc1034identifier} +//PRODUCT_BUNDLE_IDENTIFIER[config=Debug] = cc.openFrameworks.$(TARGET_NAME)Debug +DEVELOPMENT_LANGUAGE = English +CODE_SIGN_IDENTITY = - +INFOPLIST_FILE = openFrameworks-Info.plist +GENERATE_INFOPLIST_FILE = YES + +// set application category to games, this is required to enable Game mode +// note: this sets the initial value in the Xcode UI +INFOPLIST_KEY_LSApplicationCategoryType = public.app-category.games + +// VERSIONING - overridden if changed in Xcode UI + +// this is "Version" in the Xcode target Identity UI +// suggested to use semantic versioning format ala #.#.# +MARKETING_VERSION = 0.1.0 + +// If users upgrade project to recommended settings it enables script sandboxing which breaks our post build script +ENABLE_USER_SCRIPT_SANDBOXING=NO + +// this is "Build" in the Xcode target Identity UI, an incremental build number +// important for the App Store as new build submissions need a diff number even +// if MARKETING_VERSION is the same +CURRENT_PROJECT_VERSION = 1 + +// ICONS + +// default oF app icon +ICON_NAME = of.icns +ICON_NAME[config=Debug] = of_debug.icns +ICON_FILE = $(OF_PATH)/libs/openFrameworksCompiled/project/osx/$(ICON_NAME) + +// custom app icon, placed in main project folder +//ICON_NAME = MyApp.icns +//ICON_FILE = $(ICON_NAME) + +// custom app icon with separate Release and Debug versions placed in bin/data +//ICON_NAME = icon.icns +//ICON_NAME[config=Debug] = icon-debug.icns +//ICON_FILE = bin/data/$(ICON_NAME) + +// note: oF 0.7.2 - 0.11 used ICON_FILE_PATH which is no longer used in oF 0.12+ +// ex. change ICON_FILE_PATH = bin/data/ -> ICON_FILE = bin/data/$(ICON_NAME) & +// in a custom openFrameworks-Info.plist, set CFBundleIconFile to ICON_NAME + +//APPSTORE, uncomment next lines to bundle data folder and code sign +//OF_CODESIGN = 1 +//OF_BUNDLE_DATA_FOLDER = 1 +//OF_BUNDLE_DYLIBS = 1 + +HIGH_RESOLUTION_CAPABLE = NO + +// Optional include to keep any permanent settings as CODE_SIGN_IDENTITY. +#include? "App.xcconfig" + +//FOR AV ENGINE SOUND PLAYER UNCOMMENT THREE LINES BELOW +OF_NO_FMOD=1 +USER_PREPROCESSOR_DEFINITIONS="OF_NO_FMOD=1" +LIB_FMOD="" +GCC_PREPROCESSOR_DEFINITIONS=$(inherited) $(USER_PREPROCESSOR_DEFINITIONS) + +OTHER_CFLAGS = $(OF_CORE_CFLAGS) +OTHER_LDFLAGS = $(OF_CORE_LIBS) $(OF_CORE_FRAMEWORKS) HEADER_SEARCH_PATHS = $(OF_CORE_HEADERS) + +//THIS MAKES SURE THE APP BUILDS INSIDE THE BIN FOLDER +//If you comment this line out the app will be run from DerrivedData and your data/ files won't be accessible unless you uncomment OF_BUNDLE_DATA_FOLDER = 1 above +CONFIGURATION_BUILD_DIR = ${SRCROOT}/bin + +//OF_CORE_BUILD_COMMAND = echo \"💾 Compiling openFrameworks\"\nxcodebuild -project \"$OF_PATH/libs/openFrameworksCompiled/project/osx/openFrameworksLib.xcodeproj\" -target openFrameworks -configuration \"${CONFIGURATION}\" CLANG_CXX_LANGUAGE_STANDARD=$CLANG_CXX_LANGUAGE_STANDARD MACOSX_DEPLOYMENT_TARGET=$MACOSX_DEPLOYMENT_TARGET GCC_PREPROCESSOR_DEFINITIONS='$USER_PREPROCESSOR_DEFINITIONS' + + +OF_CORE_BUILD_COMMAND = xcodebuild -project $OF_PATH/libs/openFrameworksCompiled/project/osx/openFrameworksLib.xcodeproj -target openFrameworks -configuration ${CONFIGURATION} CLANG_CXX_LANGUAGE_STANDARD=$CLANG_CXX_LANGUAGE_STANDARD MACOSX_DEPLOYMENT_TARGET=$MACOSX_DEPLOYMENT_TARGET GCC_PREPROCESSOR_DEFINITIONS=$USER_PREPROCESSOR_DEFINITIONS diff --git a/example-bvh/addons.make b/example-bvh/addons.make new file mode 100644 index 0000000..bec539d --- /dev/null +++ b/example-bvh/addons.make @@ -0,0 +1 @@ +../ofxBvh diff --git a/example-bvh/config.make b/example-bvh/config.make new file mode 100644 index 0000000..c3593ae --- /dev/null +++ b/example-bvh/config.make @@ -0,0 +1,3 @@ +# This suite is designed to live at apps/myApps/example-openFrameworks. +# Override from any location with: make OF_ROOT=/path/to/openFrameworks +OF_ROOT ?= ../../../.. diff --git a/example-bvh/example-bvh.xcodeproj/project.pbxproj b/example-bvh/example-bvh.xcodeproj/project.pbxproj index 8aa331f..359d1bf 100644 --- a/example-bvh/example-bvh.xcodeproj/project.pbxproj +++ b/example-bvh/example-bvh.xcodeproj/project.pbxproj @@ -1,593 +1,358 @@ -// !$*UTF8*$! { - archiveVersion = 1; - classes = { - }; - objectVersion = 42; - objects = { - -/* Begin PBXBuildFile section */ - 60BF71CE15271F2400604CB3 /* ofxBvh.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 60BF71CC15271F2400604CB3 /* ofxBvh.cpp */; }; - BBAB23CB13894F3D00AA2426 /* GLUT.framework in CopyFiles */ = {isa = PBXBuildFile; fileRef = BBAB23BE13894E4700AA2426 /* GLUT.framework */; }; - E4328149138ABC9F0047C5CB /* openFrameworksDebug.a in Frameworks */ = {isa = PBXBuildFile; fileRef = E4328148138ABC890047C5CB /* openFrameworksDebug.a */; }; - E45BE97B0E8CC7DD009D7055 /* AGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E45BE9710E8CC7DD009D7055 /* AGL.framework */; }; - E45BE97C0E8CC7DD009D7055 /* ApplicationServices.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E45BE9720E8CC7DD009D7055 /* ApplicationServices.framework */; }; - E45BE97D0E8CC7DD009D7055 /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E45BE9730E8CC7DD009D7055 /* AudioToolbox.framework */; }; - E45BE97E0E8CC7DD009D7055 /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E45BE9740E8CC7DD009D7055 /* Carbon.framework */; }; - E45BE97F0E8CC7DD009D7055 /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E45BE9750E8CC7DD009D7055 /* CoreAudio.framework */; }; - E45BE9800E8CC7DD009D7055 /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E45BE9760E8CC7DD009D7055 /* CoreFoundation.framework */; }; - E45BE9810E8CC7DD009D7055 /* CoreServices.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E45BE9770E8CC7DD009D7055 /* CoreServices.framework */; }; - E45BE9830E8CC7DD009D7055 /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E45BE9790E8CC7DD009D7055 /* OpenGL.framework */; }; - E45BE9840E8CC7DD009D7055 /* QuickTime.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E45BE97A0E8CC7DD009D7055 /* QuickTime.framework */; }; - E4B69E200A3A1BDC003C02F2 /* main.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E4B69E1D0A3A1BDC003C02F2 /* main.cpp */; }; - E4B69E210A3A1BDC003C02F2 /* testApp.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E4B69E1E0A3A1BDC003C02F2 /* testApp.cpp */; }; - E4C2424710CC5A17004149E2 /* AppKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E4C2424410CC5A17004149E2 /* AppKit.framework */; }; - E4C2424810CC5A17004149E2 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E4C2424510CC5A17004149E2 /* Cocoa.framework */; }; - E4C2424910CC5A17004149E2 /* IOKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E4C2424610CC5A17004149E2 /* IOKit.framework */; }; - E4EB6799138ADC1D00A09F29 /* GLUT.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BBAB23BE13894E4700AA2426 /* GLUT.framework */; }; -/* End PBXBuildFile section */ - -/* Begin PBXContainerItemProxy section */ - E4328147138ABC890047C5CB /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = E4328143138ABC890047C5CB /* openFrameworksLib.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = E4B27C1510CBEB8E00536013; - remoteInfo = openFrameworks; - }; - E4EEB9AB138B136A00A80321 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = E4328143138ABC890047C5CB /* openFrameworksLib.xcodeproj */; - proxyType = 1; - remoteGlobalIDString = E4B27C1410CBEB8E00536013; - remoteInfo = openFrameworks; - }; -/* End PBXContainerItemProxy section */ - -/* Begin PBXCopyFilesBuildPhase section */ - E4C2427710CC5ABF004149E2 /* CopyFiles */ = { - isa = PBXCopyFilesBuildPhase; - buildActionMask = 2147483647; - dstPath = ""; - dstSubfolderSpec = 10; - files = ( - BBAB23CB13894F3D00AA2426 /* GLUT.framework in CopyFiles */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXCopyFilesBuildPhase section */ - -/* Begin PBXFileReference section */ - 60BF71C915271F2400604CB3 /* .gitignore */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = .gitignore; sourceTree = ""; }; - 60BF71CA15271F2400604CB3 /* LICENSE */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = LICENSE; sourceTree = ""; }; - 60BF71CC15271F2400604CB3 /* ofxBvh.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ofxBvh.cpp; sourceTree = ""; }; - 60BF71CD15271F2400604CB3 /* ofxBvh.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ofxBvh.h; sourceTree = ""; }; - BBAB23BE13894E4700AA2426 /* GLUT.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = GLUT.framework; path = ../../../libs/glut/lib/osx/GLUT.framework; sourceTree = ""; }; - E4328143138ABC890047C5CB /* openFrameworksLib.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = openFrameworksLib.xcodeproj; path = ../../../libs/openFrameworksCompiled/project/osx/openFrameworksLib.xcodeproj; sourceTree = SOURCE_ROOT; }; - E45BE9710E8CC7DD009D7055 /* AGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AGL.framework; path = /System/Library/Frameworks/AGL.framework; sourceTree = ""; }; - E45BE9720E8CC7DD009D7055 /* ApplicationServices.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = ApplicationServices.framework; path = /System/Library/Frameworks/ApplicationServices.framework; sourceTree = ""; }; - E45BE9730E8CC7DD009D7055 /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioToolbox.framework; path = /System/Library/Frameworks/AudioToolbox.framework; sourceTree = ""; }; - E45BE9740E8CC7DD009D7055 /* Carbon.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Carbon.framework; path = /System/Library/Frameworks/Carbon.framework; sourceTree = ""; }; - E45BE9750E8CC7DD009D7055 /* CoreAudio.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreAudio.framework; path = /System/Library/Frameworks/CoreAudio.framework; sourceTree = ""; }; - E45BE9760E8CC7DD009D7055 /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreFoundation.framework; path = /System/Library/Frameworks/CoreFoundation.framework; sourceTree = ""; }; - E45BE9770E8CC7DD009D7055 /* CoreServices.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreServices.framework; path = /System/Library/Frameworks/CoreServices.framework; sourceTree = ""; }; - E45BE9790E8CC7DD009D7055 /* OpenGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGL.framework; path = /System/Library/Frameworks/OpenGL.framework; sourceTree = ""; }; - E45BE97A0E8CC7DD009D7055 /* QuickTime.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuickTime.framework; path = /System/Library/Frameworks/QuickTime.framework; sourceTree = ""; }; - E4B69B5B0A3A1756003C02F2 /* example-bvhDebug.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "example-bvhDebug.app"; sourceTree = BUILT_PRODUCTS_DIR; }; - E4B69E1D0A3A1BDC003C02F2 /* main.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = main.cpp; path = src/main.cpp; sourceTree = SOURCE_ROOT; }; - E4B69E1E0A3A1BDC003C02F2 /* testApp.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.cpp; fileEncoding = 4; name = testApp.cpp; path = src/testApp.cpp; sourceTree = SOURCE_ROOT; }; - E4B69E1F0A3A1BDC003C02F2 /* testApp.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = testApp.h; path = src/testApp.h; sourceTree = SOURCE_ROOT; }; - E4B6FCAD0C3E899E008CF71C /* openFrameworks-Info.plist */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text.plist.xml; path = "openFrameworks-Info.plist"; sourceTree = ""; }; - E4C2424410CC5A17004149E2 /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = /System/Library/Frameworks/AppKit.framework; sourceTree = ""; }; - E4C2424510CC5A17004149E2 /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = /System/Library/Frameworks/Cocoa.framework; sourceTree = ""; }; - E4C2424610CC5A17004149E2 /* IOKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = IOKit.framework; path = /System/Library/Frameworks/IOKit.framework; sourceTree = ""; }; - E4EB691F138AFCF100A09F29 /* CoreOF.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = CoreOF.xcconfig; path = ../../../libs/openFrameworksCompiled/project/osx/CoreOF.xcconfig; sourceTree = SOURCE_ROOT; }; - E4EB6923138AFD0F00A09F29 /* Project.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = Project.xcconfig; sourceTree = ""; }; -/* End PBXFileReference section */ - -/* Begin PBXFrameworksBuildPhase section */ - E4B69B590A3A1756003C02F2 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - E4EB6799138ADC1D00A09F29 /* GLUT.framework in Frameworks */, - E4328149138ABC9F0047C5CB /* openFrameworksDebug.a in Frameworks */, - E45BE97B0E8CC7DD009D7055 /* AGL.framework in Frameworks */, - E45BE97C0E8CC7DD009D7055 /* ApplicationServices.framework in Frameworks */, - E45BE97D0E8CC7DD009D7055 /* AudioToolbox.framework in Frameworks */, - E45BE97E0E8CC7DD009D7055 /* Carbon.framework in Frameworks */, - E45BE97F0E8CC7DD009D7055 /* CoreAudio.framework in Frameworks */, - E45BE9800E8CC7DD009D7055 /* CoreFoundation.framework in Frameworks */, - E45BE9810E8CC7DD009D7055 /* CoreServices.framework in Frameworks */, - E45BE9830E8CC7DD009D7055 /* OpenGL.framework in Frameworks */, - E45BE9840E8CC7DD009D7055 /* QuickTime.framework in Frameworks */, - E4C2424710CC5A17004149E2 /* AppKit.framework in Frameworks */, - E4C2424810CC5A17004149E2 /* Cocoa.framework in Frameworks */, - E4C2424910CC5A17004149E2 /* IOKit.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXFrameworksBuildPhase section */ - -/* Begin PBXGroup section */ - 60BF71C815271F2400604CB3 /* ofxBvh */ = { - isa = PBXGroup; - children = ( - 60BF71C915271F2400604CB3 /* .gitignore */, - 60BF71CA15271F2400604CB3 /* LICENSE */, - 60BF71CB15271F2400604CB3 /* src */, - ); - name = ofxBvh; - path = ../../../addons/ofxBvh; - sourceTree = ""; - }; - 60BF71CB15271F2400604CB3 /* src */ = { - isa = PBXGroup; - children = ( - 60BF71CC15271F2400604CB3 /* ofxBvh.cpp */, - 60BF71CD15271F2400604CB3 /* ofxBvh.h */, - ); - path = src; - sourceTree = ""; - }; - BB4B014C10F69532006C3DED /* addons */ = { - isa = PBXGroup; - children = ( - 60BF71C815271F2400604CB3 /* ofxBvh */, - ); - name = addons; - sourceTree = ""; - }; - BBAB23C913894ECA00AA2426 /* system frameworks */ = { - isa = PBXGroup; - children = ( - E4C2424410CC5A17004149E2 /* AppKit.framework */, - E4C2424510CC5A17004149E2 /* Cocoa.framework */, - E4C2424610CC5A17004149E2 /* IOKit.framework */, - E45BE9710E8CC7DD009D7055 /* AGL.framework */, - E45BE9720E8CC7DD009D7055 /* ApplicationServices.framework */, - E45BE9730E8CC7DD009D7055 /* AudioToolbox.framework */, - E45BE9740E8CC7DD009D7055 /* Carbon.framework */, - E45BE9750E8CC7DD009D7055 /* CoreAudio.framework */, - E45BE9760E8CC7DD009D7055 /* CoreFoundation.framework */, - E45BE9770E8CC7DD009D7055 /* CoreServices.framework */, - E45BE9790E8CC7DD009D7055 /* OpenGL.framework */, - E45BE97A0E8CC7DD009D7055 /* QuickTime.framework */, - ); - name = "system frameworks"; - sourceTree = ""; - }; - BBAB23CA13894EDB00AA2426 /* 3rd party frameworks */ = { - isa = PBXGroup; - children = ( - BBAB23BE13894E4700AA2426 /* GLUT.framework */, - ); - name = "3rd party frameworks"; - sourceTree = ""; - }; - E4328144138ABC890047C5CB /* Products */ = { - isa = PBXGroup; - children = ( - E4328148138ABC890047C5CB /* openFrameworksDebug.a */, - ); - name = Products; - sourceTree = ""; - }; - E45BE5980E8CC70C009D7055 /* frameworks */ = { - isa = PBXGroup; - children = ( - BBAB23CA13894EDB00AA2426 /* 3rd party frameworks */, - BBAB23C913894ECA00AA2426 /* system frameworks */, - ); - name = frameworks; - sourceTree = ""; - }; - E4B69B4A0A3A1720003C02F2 = { - isa = PBXGroup; - children = ( - E4B69E1C0A3A1BDC003C02F2 /* src */, - E4EEC9E9138DF44700A80321 /* openFrameworks */, - BB4B014C10F69532006C3DED /* addons */, - E45BE5980E8CC70C009D7055 /* frameworks */, - E4B69B5B0A3A1756003C02F2 /* example-bvhDebug.app */, - ); - sourceTree = ""; - }; - E4B69E1C0A3A1BDC003C02F2 /* src */ = { - isa = PBXGroup; - children = ( - E4B69E1D0A3A1BDC003C02F2 /* main.cpp */, - E4B69E1F0A3A1BDC003C02F2 /* testApp.h */, - E4B69E1E0A3A1BDC003C02F2 /* testApp.cpp */, - ); - path = src; - sourceTree = SOURCE_ROOT; - }; - E4EEC9E9138DF44700A80321 /* openFrameworks */ = { - isa = PBXGroup; - children = ( - E4EB6923138AFD0F00A09F29 /* Project.xcconfig */, - E4EB691F138AFCF100A09F29 /* CoreOF.xcconfig */, - E4328143138ABC890047C5CB /* openFrameworksLib.xcodeproj */, - E4B6FCAD0C3E899E008CF71C /* openFrameworks-Info.plist */, - ); - name = openFrameworks; - sourceTree = ""; - }; -/* End PBXGroup section */ - -/* Begin PBXNativeTarget section */ - E4B69B5A0A3A1756003C02F2 /* example-bvh */ = { - isa = PBXNativeTarget; - buildConfigurationList = E4B69B5F0A3A1757003C02F2 /* Build configuration list for PBXNativeTarget "example-bvh" */; - buildPhases = ( - E4B69B580A3A1756003C02F2 /* Sources */, - E4B69B590A3A1756003C02F2 /* Frameworks */, - E4B6FFFD0C3F9AB9008CF71C /* ShellScript */, - E4C2427710CC5ABF004149E2 /* CopyFiles */, - ); - buildRules = ( - ); - dependencies = ( - E4EEB9AC138B136A00A80321 /* PBXTargetDependency */, - ); - name = "example-bvh"; - productName = myOFApp; - productReference = E4B69B5B0A3A1756003C02F2 /* example-bvhDebug.app */; - productType = "com.apple.product-type.application"; - }; -/* End PBXNativeTarget section */ - -/* Begin PBXProject section */ - E4B69B4C0A3A1720003C02F2 /* Project object */ = { - isa = PBXProject; - buildConfigurationList = E4B69B4D0A3A1720003C02F2 /* Build configuration list for PBXProject "example-bvh" */; - compatibilityVersion = "Xcode 2.4"; - developmentRegion = English; - hasScannedForEncodings = 0; - knownRegions = ( - English, - Japanese, - French, - German, - ); - mainGroup = E4B69B4A0A3A1720003C02F2; - productRefGroup = E4B69B4A0A3A1720003C02F2; - projectDirPath = ""; - projectReferences = ( - { - ProductGroup = E4328144138ABC890047C5CB /* Products */; - ProjectRef = E4328143138ABC890047C5CB /* openFrameworksLib.xcodeproj */; - }, - ); - projectRoot = ""; - targets = ( - E4B69B5A0A3A1756003C02F2 /* example-bvh */, - ); - }; -/* End PBXProject section */ - -/* Begin PBXReferenceProxy section */ - E4328148138ABC890047C5CB /* openFrameworksDebug.a */ = { - isa = PBXReferenceProxy; - fileType = archive.ar; - path = openFrameworksDebug.a; - remoteRef = E4328147138ABC890047C5CB /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; -/* End PBXReferenceProxy section */ - -/* Begin PBXShellScriptBuildPhase section */ - E4B6FFFD0C3F9AB9008CF71C /* ShellScript */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - ); - outputPaths = ( - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "cp -f ../../../libs/fmodex/lib/osx/libfmodex.dylib \"$TARGET_BUILD_DIR/$PRODUCT_NAME.app/Contents/MacOS/libfmodex.dylib\"; install_name_tool -change ./libfmodex.dylib @executable_path/libfmodex.dylib \"$TARGET_BUILD_DIR/$PRODUCT_NAME.app/Contents/MacOS/$PRODUCT_NAME\";"; - }; -/* End PBXShellScriptBuildPhase section */ - -/* Begin PBXSourcesBuildPhase section */ - E4B69B580A3A1756003C02F2 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - E4B69E200A3A1BDC003C02F2 /* main.cpp in Sources */, - E4B69E210A3A1BDC003C02F2 /* testApp.cpp in Sources */, - 60BF71CE15271F2400604CB3 /* ofxBvh.cpp in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXSourcesBuildPhase section */ - -/* Begin PBXTargetDependency section */ - E4EEB9AC138B136A00A80321 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = openFrameworks; - targetProxy = E4EEB9AB138B136A00A80321 /* PBXContainerItemProxy */; - }; -/* End PBXTargetDependency section */ - -/* Begin XCBuildConfiguration section */ - E4B69B4E0A3A1720003C02F2 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = E4EB6923138AFD0F00A09F29 /* Project.xcconfig */; - buildSettings = { - ARCHS = "$(NATIVE_ARCH)"; - CONFIGURATION_BUILD_DIR = "$(SRCROOT)/bin/"; - COPY_PHASE_STRIP = NO; - DEAD_CODE_STRIPPING = YES; - GCC_AUTO_VECTORIZATION = YES; - GCC_ENABLE_SSE3_EXTENSIONS = YES; - GCC_ENABLE_SUPPLEMENTAL_SSE3_INSTRUCTIONS = YES; - GCC_INLINES_ARE_PRIVATE_EXTERN = NO; - GCC_MODEL_TUNING = G5; - GCC_SYMBOLS_PRIVATE_EXTERN = NO; - GCC_WARN_ABOUT_DEPRECATED_FUNCTIONS = NO; - GCC_WARN_ABOUT_INVALID_OFFSETOF_MACRO = NO; - GCC_WARN_ALLOW_INCOMPLETE_PROTOCOL = NO; - GCC_WARN_UNINITIALIZED_AUTOS = NO; - GCC_WARN_UNUSED_VALUE = NO; - GCC_WARN_UNUSED_VARIABLE = NO; - OTHER_CPLUSPLUSFLAGS = ( - "-D__MACOSX_CORE__", - "-lpthread", - ); - }; - name = Debug; - }; - E4B69B4F0A3A1720003C02F2 /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = E4EB6923138AFD0F00A09F29 /* Project.xcconfig */; - buildSettings = { - ARCHS = "$(NATIVE_ARCH)"; - CONFIGURATION_BUILD_DIR = "$(SRCROOT)/bin/"; - COPY_PHASE_STRIP = YES; - DEAD_CODE_STRIPPING = YES; - GCC_AUTO_VECTORIZATION = YES; - GCC_ENABLE_SSE3_EXTENSIONS = YES; - GCC_ENABLE_SUPPLEMENTAL_SSE3_INSTRUCTIONS = YES; - GCC_INLINES_ARE_PRIVATE_EXTERN = NO; - GCC_MODEL_TUNING = G5; - GCC_OPTIMIZATION_LEVEL = 3; - GCC_SYMBOLS_PRIVATE_EXTERN = NO; - GCC_UNROLL_LOOPS = YES; - GCC_WARN_ABOUT_DEPRECATED_FUNCTIONS = NO; - GCC_WARN_ABOUT_INVALID_OFFSETOF_MACRO = NO; - GCC_WARN_ALLOW_INCOMPLETE_PROTOCOL = NO; - GCC_WARN_UNINITIALIZED_AUTOS = NO; - GCC_WARN_UNUSED_VALUE = NO; - GCC_WARN_UNUSED_VARIABLE = NO; - OTHER_CPLUSPLUSFLAGS = ( - "-D__MACOSX_CORE__", - "-lpthread", - ); - }; - name = Release; - }; - E4B69B600A3A1757003C02F2 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - COPY_PHASE_STRIP = NO; - FRAMEWORK_SEARCH_PATHS = ( - "$(inherited)", - "$(FRAMEWORK_SEARCH_PATHS_QUOTED_FOR_TARGET_1)", - ); - FRAMEWORK_SEARCH_PATHS_QUOTED_FOR_TARGET_1 = "\"$(SRCROOT)/../../../libs/glut/lib/osx\""; - GCC_DYNAMIC_NO_PIC = NO; - GCC_ENABLE_FIX_AND_CONTINUE = YES; - GCC_GENERATE_DEBUGGING_SYMBOLS = YES; - GCC_MODEL_TUNING = G4; - GCC_PRECOMPILE_PREFIX_HEADER = YES; - GCC_PREFIX_HEADER = "$(SYSTEM_LIBRARY_DIR)/Frameworks/Carbon.framework/Headers/Carbon.h"; - INFOPLIST_FILE = "openFrameworks-Info.plist"; - INSTALL_PATH = "$(HOME)/Applications"; - LIBRARY_SEARCH_PATHS = ( - "$(inherited)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_1)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_2)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_3)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_4)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_5)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_6)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_7)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_8)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_9)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_10)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_11)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_12)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_13)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_14)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_15)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_2)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_3)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_7)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_8)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_9)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_10)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_11)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_12)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_13)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_16)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_17)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_18)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_19)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_20)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_21)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_22)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_23)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_24)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_25)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_26)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_27)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_28)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_29)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_30)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_31)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_32)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_33)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_34)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_35)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_36)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_37)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_38)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_39)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_40)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_41)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_42)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_43)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_44)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_45)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_46)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_47)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_48)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_49)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_50)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_51)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_52)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_1)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_2)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_3)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_4)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_5)", - ); - LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_1 = "\"$(SRCROOT)/../../../addons/ofxTimeline/libs/kiss/lib/linux\""; - LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_2 = "\"$(SRCROOT)/../../../addons/ofxTimeline/libs/kiss/lib/linux64\""; - LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_3 = "\"$(SRCROOT)/../../../addons/ofxTimeline/libs/sndfile/linux/lib\""; - LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_4 = "\"$(SRCROOT)/../../../addons/ofxTimeline/libs/sndfile/osx/lib\""; - LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_5 = "\"$(SRCROOT)/../../../addons/ofxTimeline/libs/sndfile/win32/lib\""; - PREBINDING = NO; - PRODUCT_NAME = "example-bvhDebug"; - SDKROOT = "$(DEVELOPER_SDK_DIR)/MacOSX10.6.sdk"; - WRAPPER_EXTENSION = app; - }; - name = Debug; - }; - E4B69B610A3A1757003C02F2 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - COPY_PHASE_STRIP = YES; - FRAMEWORK_SEARCH_PATHS = ( - "$(inherited)", - "$(FRAMEWORK_SEARCH_PATHS_QUOTED_FOR_TARGET_1)", - ); - FRAMEWORK_SEARCH_PATHS_QUOTED_FOR_TARGET_1 = "\"$(SRCROOT)/../../../libs/glut/lib/osx\""; - GCC_ENABLE_FIX_AND_CONTINUE = NO; - GCC_GENERATE_DEBUGGING_SYMBOLS = NO; - GCC_MODEL_TUNING = G4; - GCC_PRECOMPILE_PREFIX_HEADER = YES; - GCC_PREFIX_HEADER = "$(SYSTEM_LIBRARY_DIR)/Frameworks/Carbon.framework/Headers/Carbon.h"; - INFOPLIST_FILE = "openFrameworks-Info.plist"; - INSTALL_PATH = "$(HOME)/Applications"; - LIBRARY_SEARCH_PATHS = ( - "$(inherited)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_1)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_2)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_3)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_4)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_5)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_6)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_7)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_8)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_9)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_10)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_11)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_12)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_13)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_14)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_15)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_2)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_1)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_3)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_7)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_8)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_9)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_10)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_11)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_12)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_13)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_16)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_17)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_18)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_19)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_20)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_21)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_22)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_23)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_24)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_25)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_26)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_27)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_28)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_29)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_30)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_31)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_32)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_33)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_34)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_35)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_36)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_37)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_38)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_39)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_40)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_41)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_42)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_43)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_44)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_45)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_46)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_47)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_48)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_49)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_50)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_51)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_1)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_2)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_3)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_4)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_5)", - ); - LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_1 = "\"$(SRCROOT)/../../../addons/ofxTimeline/libs/kiss/lib/linux\""; - LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_2 = "\"$(SRCROOT)/../../../addons/ofxTimeline/libs/kiss/lib/linux64\""; - LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_3 = "\"$(SRCROOT)/../../../addons/ofxTimeline/libs/sndfile/linux/lib\""; - LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_4 = "\"$(SRCROOT)/../../../addons/ofxTimeline/libs/sndfile/osx/lib\""; - LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_5 = "\"$(SRCROOT)/../../../addons/ofxTimeline/libs/sndfile/win32/lib\""; - PREBINDING = NO; - PRODUCT_NAME = "example-bvh"; - SDKROOT = "$(DEVELOPER_SDK_DIR)/MacOSX10.6.sdk"; - WRAPPER_EXTENSION = app; - }; - name = Release; - }; -/* End XCBuildConfiguration section */ - -/* Begin XCConfigurationList section */ - E4B69B4D0A3A1720003C02F2 /* Build configuration list for PBXProject "example-bvh" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - E4B69B4E0A3A1720003C02F2 /* Debug */, - E4B69B4F0A3A1720003C02F2 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - E4B69B5F0A3A1757003C02F2 /* Build configuration list for PBXNativeTarget "example-bvh" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - E4B69B600A3A1757003C02F2 /* Debug */, - E4B69B610A3A1757003C02F2 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; -/* End XCConfigurationList section */ - }; - rootObject = E4B69B4C0A3A1720003C02F2 /* Project object */; + "_OFProjectGeneratorVersion": "0.103.0", + "archiveVersion": "1", + "classes": {}, + "objectVersion": "54", + "objects": { + "109CD9CE-E9F6-4C3B-8CCB-5B39B2D3BEE4": { + "fileRef": "ACB68B30-4336-4710-94B3-8BED27DF1849", + "isa": "PBXBuildFile" + }, + "191CD6FA2847E21E0085CBB6": { + "fileEncoding": "4", + "isa": "PBXFileReference", + "lastKnownFileType": "text.plist.entitlements", + "path": "of.entitlements", + "sourceTree": "" + }, + "191EF70929D778A400F35F26": { + "isa": "PBXFileReference", + "lastKnownFileType": "folder", + "name": "openFrameworks", + "path": "../../../../libs/openFrameworks", + "sourceTree": "SOURCE_ROOT" + }, + "19B789C429E5AB4A0082E9B8": { + "alwaysOutOfDate": "1", + "buildActionMask": "2147483647", + "files": [], + "inputFileListPaths": [], + "inputPaths": [], + "isa": "PBXShellScriptBuildPhase", + "outputFileListPaths": [], + "outputPaths": [], + "runOnlyForDeploymentPostprocessing": "0", + "shellPath": "/bin/sh", + "shellScript": "\"$OF_PATH/scripts/osx/xcode_project.sh\"\n", + "showEnvVarsInLog": "0" + }, + "46A77F22-A703-4A33-AC45-CA396B3A92A0": { + "fileEncoding": "4", + "isa": "PBXFileReference", + "lastKnownFileType": "sourcecode.cpp.h", + "name": "testApp.h", + "sourceTree": "" + }, + "4A8C997B-B3CE-4C44-BC3A-FA84012AB644": { + "fileEncoding": "4", + "isa": "PBXFileReference", + "lastKnownFileType": "sourcecode.cpp.cpp", + "name": "testApp.cpp", + "sourceTree": "" + }, + "524986E5-48D9-40CF-A1DE-1AD77A70D460": { + "fileEncoding": "4", + "isa": "PBXFileReference", + "lastKnownFileType": "sourcecode.cpp.h", + "name": "ofxBvh.h", + "path": "../ofxBvh/src/ofxBvh.h", + "sourceTree": "SOURCE_ROOT" + }, + "6765369E-44B1-4647-BBD4-88D6E8460EF4": { + "children": [ + "F9DDDA2A-6B04-4E90-BDD2-F378A65B6727" + ], + "isa": "PBXGroup", + "name": "local_addons", + "path": "", + "sourceTree": "SOURCE_ROOT" + }, + "866DF713-34E1-4EAD-99E8-E6E906A44129": { + "fileRef": "4A8C997B-B3CE-4C44-BC3A-FA84012AB644", + "isa": "PBXBuildFile" + }, + "ACB68B30-4336-4710-94B3-8BED27DF1849": { + "fileEncoding": "4", + "isa": "PBXFileReference", + "lastKnownFileType": "sourcecode.cpp.cpp", + "name": "ofxBvh.cpp", + "path": "../ofxBvh/src/ofxBvh.cpp", + "sourceTree": "SOURCE_ROOT" + }, + "AF27112B-D760-4AF7-BA08-69CC3EACAAA0": { + "fileEncoding": "4", + "isa": "PBXFileReference", + "lastKnownFileType": "folder", + "name": "data", + "path": "bin/data", + "sourceTree": "SOURCE_ROOT" + }, + "BB4B014C10F69532006C3DED": { + "children": [], + "isa": "PBXGroup", + "name": "addons", + "path": "../../../../addons", + "sourceTree": "SOURCE_ROOT" + }, + "CAC13F6D-337C-4B13-9018-A41DA1A0C513": { + "children": [ + "ACB68B30-4336-4710-94B3-8BED27DF1849", + "524986E5-48D9-40CF-A1DE-1AD77A70D460" + ], + "isa": "PBXGroup", + "name": "src", + "path": "src", + "sourceTree": "" + }, + "E42962A92163ECCD00A6A9E2": { + "alwaysOutOfDate": "1", + "buildActionMask": "2147483647", + "files": [], + "inputPaths": [], + "isa": "PBXShellScriptBuildPhase", + "name": "Run Script — Compile OF", + "outputPaths": [], + "runOnlyForDeploymentPostprocessing": "0", + "shellPath": "/bin/sh", + "shellScript": "$OF_CORE_BUILD_COMMAND\n", + "showEnvVarsInLog": "0" + }, + "E4A5B60F29BAAAE400C2D356": { + "buildActionMask": "2147483647", + "dstPath": "", + "dstSubfolderSpec": "6", + "files": [], + "isa": "PBXCopyFilesBuildPhase", + "runOnlyForDeploymentPostprocessing": "0" + }, + "E4B69B4A0A3A1720003C02F2": { + "children": [ + "191CD6FA2847E21E0085CBB6", + "E4B6FCAD0C3E899E008CF71C", + "E4EB6923138AFD0F00A09F29", + "E4B69E1C0A3A1BDC003C02F2", + "191EF70929D778A400F35F26", + "BB4B014C10F69532006C3DED", + "E4B69B5B0A3A1756003C02F2", + "6765369E-44B1-4647-BBD4-88D6E8460EF4", + "AF27112B-D760-4AF7-BA08-69CC3EACAAA0" + ], + "isa": "PBXGroup", + "sourceTree": "" + }, + "E4B69B4C0A3A1720003C02F2": { + "attributes": { + "BuildIndependentTargetsInParallel": "YES", + "LastUpgradeCheck": "1540" + }, + "buildConfigurationList": "E4B69B4D0A3A1720003C02F2", + "compatibilityVersion": "Xcode 3.2", + "developmentRegion": "en", + "hasScannedForEncodings": "0", + "isa": "PBXProject", + "knownRegions": [ + "en", + "Base" + ], + "mainGroup": "E4B69B4A0A3A1720003C02F2", + "productRefGroup": "E4B69B4A0A3A1720003C02F2", + "projectDirPath": "", + "projectRoot": "", + "targets": [ + "E4B69B5A0A3A1756003C02F2" + ] + }, + "E4B69B4D0A3A1720003C02F2": { + "buildConfigurations": [ + "E4B69B4E0A3A1720003C02F2", + "E4B69B4F0A3A1720003C02F2" + ], + "defaultConfigurationIsVisible": "0", + "defaultConfigurationName": "Release", + "isa": "XCConfigurationList" + }, + "E4B69B4E0A3A1720003C02F2": { + "baseConfigurationReference": "E4EB6923138AFD0F00A09F29", + "buildSettings": { + "CODE_SIGN_ENTITLEMENTS": "of.entitlements", + "COPY_PHASE_STRIP": "NO", + "ENABLE_TESTABILITY": "YES", + "GCC_OPTIMIZATION_LEVEL": "0", + "GCC_WARN_UNUSED_VARIABLE": "NO", + "HEADER_SEARCH_PATHS": [ + "$(OF_CORE_HEADERS)", + "src" + ], + "OTHER_CPLUSPLUSFLAGS": "-D__MACOSX_CORE__" + }, + "isa": "XCBuildConfiguration", + "name": "Debug" + }, + "E4B69B4F0A3A1720003C02F2": { + "baseConfigurationReference": "E4EB6923138AFD0F00A09F29", + "buildSettings": { + "CODE_SIGN_ENTITLEMENTS": "of.entitlements", + "COPY_PHASE_STRIP": "YES", + "GCC_OPTIMIZATION_LEVEL": "3", + "GCC_UNROLL_LOOPS": "YES", + "HEADER_SEARCH_PATHS": [ + "$(OF_CORE_HEADERS)", + "src" + ], + "OTHER_CPLUSPLUSFLAGS": "-D__MACOSX_CORE__" + }, + "isa": "XCBuildConfiguration", + "name": "Release" + }, + "E4B69B580A3A1756003C02F2": { + "buildActionMask": "2147483647", + "files": [ + "E4B69E200A3A1BDC003C02F2", + "866DF713-34E1-4EAD-99E8-E6E906A44129", + "109CD9CE-E9F6-4C3B-8CCB-5B39B2D3BEE4" + ], + "isa": "PBXSourcesBuildPhase", + "runOnlyForDeploymentPostprocessing": "0" + }, + "E4B69B590A3A1756003C02F2": { + "buildActionMask": "2147483647", + "files": [], + "isa": "PBXFrameworksBuildPhase", + "runOnlyForDeploymentPostprocessing": "0" + }, + "E4B69B5A0A3A1756003C02F2": { + "buildConfigurationList": "E4B69B5F0A3A1757003C02F2", + "buildPhases": [ + "E42962A92163ECCD00A6A9E2", + "E4B69B580A3A1756003C02F2", + "E4B69B590A3A1756003C02F2", + "E4C2427710CC5ABF004149E2", + "E4A5B60F29BAAAE400C2D356", + "19B789C429E5AB4A0082E9B8" + ], + "buildRules": [], + "dependencies": [], + "isa": "PBXNativeTarget", + "name": "example-bvh", + "productName": "myOFApp", + "productReference": "E4B69B5B0A3A1756003C02F2", + "productType": "com.apple.product-type.application" + }, + "E4B69B5B0A3A1756003C02F2": { + "explicitFileType": "wrapper.application", + "includeInIndex": "0", + "isa": "PBXFileReference", + "path": "example-bvhDebug.app", + "sourceTree": "BUILT_PRODUCTS_DIR" + }, + "E4B69B5F0A3A1757003C02F2": { + "buildConfigurations": [ + "E4B69B600A3A1757003C02F2", + "E4B69B610A3A1757003C02F2" + ], + "defaultConfigurationIsVisible": "0", + "defaultConfigurationName": "Release", + "isa": "XCConfigurationList" + }, + "E4B69B600A3A1757003C02F2": { + "baseConfigurationReference": "E4EB6923138AFD0F00A09F29", + "buildSettings": { + "ARCHS": "$(ARCHS_STANDARD)", + "COPY_PHASE_STRIP": "NO", + "FRAMEWORK_SEARCH_PATHS": "$(inherited)", + "GCC_DYNAMIC_NO_PIC": "NO", + "HEADER_SEARCH_PATHS": [ + "$(OF_CORE_HEADERS)", + "src", + "src", + "../ofxBvh/src" + ], + "LIBRARY_SEARCH_PATHS": "$(inherited)", + "OTHER_LDFLAGS": [ + "$(OF_CORE_LIBS)", + "$(OF_CORE_FRAMEWORKS)", + "$(LIB_OF_DEBUG)" + ] + }, + "isa": "XCBuildConfiguration", + "name": "Debug" + }, + "E4B69B610A3A1757003C02F2": { + "baseConfigurationReference": "E4EB6923138AFD0F00A09F29", + "buildSettings": { + "ARCHS": "$(ARCHS_STANDARD)", + "COPY_PHASE_STRIP": "YES", + "FRAMEWORK_SEARCH_PATHS": "$(inherited)", + "HEADER_SEARCH_PATHS": [ + "$(OF_CORE_HEADERS)", + "src", + "src", + "../ofxBvh/src" + ], + "LIBRARY_SEARCH_PATHS": "$(inherited)", + "OTHER_LDFLAGS": [ + "$(OF_CORE_LIBS)", + "$(OF_CORE_FRAMEWORKS)", + "$(LIB_OF_RELEASE)" + ], + "baseConfigurationReference": "E4EB6923138AFD0F00A09F29" + }, + "isa": "XCBuildConfiguration", + "name": "Release" + }, + "E4B69E1C0A3A1BDC003C02F2": { + "children": [ + "E4B69E1D0A3A1BDC003C02F2", + "4A8C997B-B3CE-4C44-BC3A-FA84012AB644", + "46A77F22-A703-4A33-AC45-CA396B3A92A0" + ], + "isa": "PBXGroup", + "path": "src", + "sourceTree": "SOURCE_ROOT" + }, + "E4B69E1D0A3A1BDC003C02F2": { + "fileEncoding": "4", + "isa": "PBXFileReference", + "lastKnownFileType": "sourcecode.cpp.cpp", + "name": "main.cpp", + "path": "src/main.cpp", + "sourceTree": "SOURCE_ROOT" + }, + "E4B69E200A3A1BDC003C02F2": { + "fileRef": "E4B69E1D0A3A1BDC003C02F2", + "isa": "PBXBuildFile" + }, + "E4B6FCAD0C3E899E008CF71C": { + "fileEncoding": "4", + "isa": "PBXFileReference", + "lastKnownFileType": "text.plist.xml", + "path": "openFrameworks-Info.plist", + "sourceTree": "" + }, + "E4C2427710CC5ABF004149E2": { + "buildActionMask": "2147483647", + "dstPath": "", + "dstSubfolderSpec": "10", + "files": [], + "isa": "PBXCopyFilesBuildPhase", + "runOnlyForDeploymentPostprocessing": "0" + }, + "E4EB6923138AFD0F00A09F29": { + "fileEncoding": "4", + "isa": "PBXFileReference", + "lastKnownFileType": "text.xcconfig", + "path": "Project.xcconfig", + "sourceTree": "" + }, + "F9DDDA2A-6B04-4E90-BDD2-F378A65B6727": { + "children": [ + "CAC13F6D-337C-4B13-9018-A41DA1A0C513" + ], + "isa": "PBXGroup", + "name": "ofxBvh", + "path": "../ofxBvh", + "sourceTree": "SOURCE_ROOT" + } + }, + "rootObject": "E4B69B4C0A3A1720003C02F2" } diff --git a/example-bvh/example-bvh.xcodeproj/xcshareddata/xcschemes/example-bvh Debug.xcscheme b/example-bvh/example-bvh.xcodeproj/xcshareddata/xcschemes/example-bvh Debug.xcscheme new file mode 100644 index 0000000..5d4b5c9 --- /dev/null +++ b/example-bvh/example-bvh.xcodeproj/xcshareddata/xcschemes/example-bvh Debug.xcscheme @@ -0,0 +1,104 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/example-bvh/example-bvh.xcodeproj/xcshareddata/xcschemes/example-bvh Release.xcscheme b/example-bvh/example-bvh.xcodeproj/xcshareddata/xcschemes/example-bvh Release.xcscheme new file mode 100644 index 0000000..58ff99c --- /dev/null +++ b/example-bvh/example-bvh.xcodeproj/xcshareddata/xcschemes/example-bvh Release.xcscheme @@ -0,0 +1,104 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/example-bvh/of.entitlements b/example-bvh/of.entitlements new file mode 100644 index 0000000..f4fc128 --- /dev/null +++ b/example-bvh/of.entitlements @@ -0,0 +1,24 @@ + + + + + com.apple.security.app-sandbox + + com.apple.security.device.audio-input + + com.apple.security.device.bluetooth + + com.apple.security.device.camera + + com.apple.security.device.usb + + com.apple.security.files.user-selected.read-write + + com.apple.security.network.client + + com.apple.security.network.server + + com.apple.security.print + + + diff --git a/example-bvh/src/main.cpp b/example-bvh/src/main.cpp index 6a32c6a..a79738a 100644 --- a/example-bvh/src/main.cpp +++ b/example-bvh/src/main.cpp @@ -1,16 +1,14 @@ #include "ofMain.h" #include "testApp.h" -#include "ofAppGlutWindow.h" //======================================================================== -int main( ){ - - ofAppGlutWindow window; - ofSetupOpenGL(&window, 1024,768, OF_WINDOW); // <-------- setup the GL context - - // this kicks off the running of my app - // can be OF_WINDOW or OF_FULLSCREEN - // pass in width and height too: - ofRunApp( new testApp()); - +int main() { + ofGLWindowSettings settings; + settings.setSize(1024, 768); + settings.setGLVersion(2, 1); + settings.windowMode = OF_WINDOW; + + auto window = ofCreateWindow(settings); + ofRunApp(window, std::make_shared()); + ofRunMainLoop(); } diff --git a/example-bvh/src/testApp.cpp b/example-bvh/src/testApp.cpp index f877863..ab619a6 100644 --- a/example-bvh/src/testApp.cpp +++ b/example-bvh/src/testApp.cpp @@ -7,44 +7,49 @@ void testApp::setup(){ ofBackground(0); - bvh.resize(3); - // setup bvh - bvh[0].load("A_test.bvh"); - bvh[1].load("B_test.bvh"); - bvh[2].load("C_test.bvh"); + assetsReady = bvh[0].load("A_test.bvh"); + assetsReady = bvh[1].load("B_test.bvh") && assetsReady; + assetsReady = bvh[2].load("C_test.bvh") && assetsReady; - for (int i = 0; i < bvh.size(); i++) + for (auto& motion : bvh) { - bvh[i].play(); - bvh[i].setLoop(true); + motion.play(); + motion.setLoop(true); } } //-------------------------------------------------------------- void testApp::update() { - for (int i = 0; i < bvh.size(); i++) + for (auto& motion : bvh) { - bvh[i].update(); + motion.update(); } } //-------------------------------------------------------------- void testApp::draw(){ - glEnable(GL_DEPTH_TEST); + ofEnableDepthTest(); ofEnableBlendMode(OF_BLENDMODE_ALPHA); cam.begin(); - for (int i = 0; i < bvh.size(); i++) + for (auto& motion : bvh) { - bvh[i].draw(); + motion.draw(); } cam.end(); + ofDisableDepthTest(); + if (!assetsReady) + { + ofSetColor(255); + ofDrawBitmapString("Unable to load the bundled BVH files.", 20, 30); + } + } //-------------------------------------------------------------- diff --git a/example-bvh/src/testApp.h b/example-bvh/src/testApp.h index 50b5a0b..90066df 100644 --- a/example-bvh/src/testApp.h +++ b/example-bvh/src/testApp.h @@ -3,24 +3,26 @@ #include "ofMain.h" #include "ofxBvh.h" -class testApp : public ofBaseApp{ +#include + +class testApp : public ofBaseApp { public: - void setup(); - void update(); - void draw(); + void setup() override; + void update() override; + void draw() override; - void keyPressed (int key); - void keyReleased(int key); - void mouseMoved(int x, int y ); - void mouseDragged(int x, int y, int button); - void mousePressed(int x, int y, int button); - void mouseReleased(int x, int y, int button); - void windowResized(int w, int h); - void dragEvent(ofDragInfo dragInfo); - void gotMessage(ofMessage msg); + void keyPressed(int key) override; + void keyReleased(int key) override; + void mouseMoved(int x, int y) override; + void mouseDragged(int x, int y, int button) override; + void mousePressed(int x, int y, int button) override; + void mouseReleased(int x, int y, int button) override; + void windowResized(int w, int h) override; + void dragEvent(ofDragInfo dragInfo) override; + void gotMessage(ofMessage msg) override; - vector bvh; + std::array bvh; ofEasyCam cam; - + bool assetsReady = false; }; diff --git a/example-pen-graphics/LICENSE b/example-pen-graphics/LICENSE index 1724108..56e2ae4 100644 --- a/example-pen-graphics/LICENSE +++ b/example-pen-graphics/LICENSE @@ -1,4 +1,6 @@ -Copyright (c) 2012 Perfume Dev Team +Copyright (c) 2012 Daito Manabe + +Originally published under the Perfume Dev Team name. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the diff --git a/example-pen-graphics/Makefile b/example-pen-graphics/Makefile new file mode 100644 index 0000000..14403c4 --- /dev/null +++ b/example-pen-graphics/Makefile @@ -0,0 +1,10 @@ +# Attempt to load project-specific configuration. +ifneq ($(wildcard config.make),) + include config.make +endif + +ifndef OF_ROOT + OF_ROOT=../../../.. +endif + +include $(OF_ROOT)/libs/openFrameworksCompiled/project/makefileCommon/compile.project.mk diff --git a/example-pen-graphics/Project.xcconfig b/example-pen-graphics/Project.xcconfig index c10b9e5..7c338e1 100644 --- a/example-pen-graphics/Project.xcconfig +++ b/example-pen-graphics/Project.xcconfig @@ -1,9 +1,88 @@ //THE PATH TO THE ROOT OF OUR OF PATH RELATIVE TO THIS PROJECT. //THIS NEEDS TO BE DEFINED BEFORE CoreOF.xcconfig IS INCLUDED -OF_PATH = ../../.. +OF_PATH = ../../../.. //THIS HAS ALL THE HEADER AND LIBS FOR OF CORE -#include "../../../libs/openFrameworksCompiled/project/osx/CoreOF.xcconfig" +#include "../../../../libs/openFrameworksCompiled/project/osx/CoreOF.xcconfig" -OTHER_LDFLAGS = $(OF_CORE_LIBS) +//UNCOMMENT BELOW TO ENABLE C++ 17 and std::filesystem +CLANG_CXX_LANGUAGE_STANDARD = c++23 +CLANG_C_LANGUAGE_STANDARD = c17 +MACOSX_DEPLOYMENT_TARGET = 11.5 + +// App Settings +PRODUCT_NAME = $(TARGET_NAME) +PRODUCT_NAME[config=Debug] = $(TARGET_NAME)Debug +PRODUCT_BUNDLE_IDENTIFIER = cc.openFrameworks.${TARGET_NAME:rfc1034identifier} +//PRODUCT_BUNDLE_IDENTIFIER[config=Debug] = cc.openFrameworks.$(TARGET_NAME)Debug +DEVELOPMENT_LANGUAGE = English +CODE_SIGN_IDENTITY = - +INFOPLIST_FILE = openFrameworks-Info.plist +GENERATE_INFOPLIST_FILE = YES + +// set application category to games, this is required to enable Game mode +// note: this sets the initial value in the Xcode UI +INFOPLIST_KEY_LSApplicationCategoryType = public.app-category.games + +// VERSIONING - overridden if changed in Xcode UI + +// this is "Version" in the Xcode target Identity UI +// suggested to use semantic versioning format ala #.#.# +MARKETING_VERSION = 0.1.0 + +// If users upgrade project to recommended settings it enables script sandboxing which breaks our post build script +ENABLE_USER_SCRIPT_SANDBOXING=NO + +// this is "Build" in the Xcode target Identity UI, an incremental build number +// important for the App Store as new build submissions need a diff number even +// if MARKETING_VERSION is the same +CURRENT_PROJECT_VERSION = 1 + +// ICONS + +// default oF app icon +ICON_NAME = of.icns +ICON_NAME[config=Debug] = of_debug.icns +ICON_FILE = $(OF_PATH)/libs/openFrameworksCompiled/project/osx/$(ICON_NAME) + +// custom app icon, placed in main project folder +//ICON_NAME = MyApp.icns +//ICON_FILE = $(ICON_NAME) + +// custom app icon with separate Release and Debug versions placed in bin/data +//ICON_NAME = icon.icns +//ICON_NAME[config=Debug] = icon-debug.icns +//ICON_FILE = bin/data/$(ICON_NAME) + +// note: oF 0.7.2 - 0.11 used ICON_FILE_PATH which is no longer used in oF 0.12+ +// ex. change ICON_FILE_PATH = bin/data/ -> ICON_FILE = bin/data/$(ICON_NAME) & +// in a custom openFrameworks-Info.plist, set CFBundleIconFile to ICON_NAME + +//APPSTORE, uncomment next lines to bundle data folder and code sign +//OF_CODESIGN = 1 +//OF_BUNDLE_DATA_FOLDER = 1 +//OF_BUNDLE_DYLIBS = 1 + +HIGH_RESOLUTION_CAPABLE = NO + +// Optional include to keep any permanent settings as CODE_SIGN_IDENTITY. +#include? "App.xcconfig" + +//FOR AV ENGINE SOUND PLAYER UNCOMMENT THREE LINES BELOW +OF_NO_FMOD=1 +USER_PREPROCESSOR_DEFINITIONS="OF_NO_FMOD=1" +LIB_FMOD="" +GCC_PREPROCESSOR_DEFINITIONS=$(inherited) $(USER_PREPROCESSOR_DEFINITIONS) + +OTHER_CFLAGS = $(OF_CORE_CFLAGS) +OTHER_LDFLAGS = $(OF_CORE_LIBS) $(OF_CORE_FRAMEWORKS) HEADER_SEARCH_PATHS = $(OF_CORE_HEADERS) + +//THIS MAKES SURE THE APP BUILDS INSIDE THE BIN FOLDER +//If you comment this line out the app will be run from DerrivedData and your data/ files won't be accessible unless you uncomment OF_BUNDLE_DATA_FOLDER = 1 above +CONFIGURATION_BUILD_DIR = ${SRCROOT}/bin + +//OF_CORE_BUILD_COMMAND = echo \"💾 Compiling openFrameworks\"\nxcodebuild -project \"$OF_PATH/libs/openFrameworksCompiled/project/osx/openFrameworksLib.xcodeproj\" -target openFrameworks -configuration \"${CONFIGURATION}\" CLANG_CXX_LANGUAGE_STANDARD=$CLANG_CXX_LANGUAGE_STANDARD MACOSX_DEPLOYMENT_TARGET=$MACOSX_DEPLOYMENT_TARGET GCC_PREPROCESSOR_DEFINITIONS='$USER_PREPROCESSOR_DEFINITIONS' + + +OF_CORE_BUILD_COMMAND = xcodebuild -project $OF_PATH/libs/openFrameworksCompiled/project/osx/openFrameworksLib.xcodeproj -target openFrameworks -configuration ${CONFIGURATION} CLANG_CXX_LANGUAGE_STANDARD=$CLANG_CXX_LANGUAGE_STANDARD MACOSX_DEPLOYMENT_TARGET=$MACOSX_DEPLOYMENT_TARGET GCC_PREPROCESSOR_DEFINITIONS=$USER_PREPROCESSOR_DEFINITIONS diff --git a/example-pen-graphics/addons.make b/example-pen-graphics/addons.make new file mode 100644 index 0000000..bec539d --- /dev/null +++ b/example-pen-graphics/addons.make @@ -0,0 +1 @@ +../ofxBvh diff --git a/example-pen-graphics/config.make b/example-pen-graphics/config.make new file mode 100644 index 0000000..c3593ae --- /dev/null +++ b/example-pen-graphics/config.make @@ -0,0 +1,3 @@ +# This suite is designed to live at apps/myApps/example-openFrameworks. +# Override from any location with: make OF_ROOT=/path/to/openFrameworks +OF_ROOT ?= ../../../.. diff --git a/example-pen-graphics/example-pen-graphics.xcodeproj/project.pbxproj b/example-pen-graphics/example-pen-graphics.xcodeproj/project.pbxproj index d1a6562..efeb1ee 100644 --- a/example-pen-graphics/example-pen-graphics.xcodeproj/project.pbxproj +++ b/example-pen-graphics/example-pen-graphics.xcodeproj/project.pbxproj @@ -1,593 +1,358 @@ -// !$*UTF8*$! { - archiveVersion = 1; - classes = { - }; - objectVersion = 42; - objects = { - -/* Begin PBXBuildFile section */ - 60BF71DE15271F3F00604CB3 /* ofxBvh.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 60BF71DC15271F3F00604CB3 /* ofxBvh.cpp */; }; - BBAB23CB13894F3D00AA2426 /* GLUT.framework in CopyFiles */ = {isa = PBXBuildFile; fileRef = BBAB23BE13894E4700AA2426 /* GLUT.framework */; }; - E4328149138ABC9F0047C5CB /* openFrameworksDebug.a in Frameworks */ = {isa = PBXBuildFile; fileRef = E4328148138ABC890047C5CB /* openFrameworksDebug.a */; }; - E45BE97B0E8CC7DD009D7055 /* AGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E45BE9710E8CC7DD009D7055 /* AGL.framework */; }; - E45BE97C0E8CC7DD009D7055 /* ApplicationServices.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E45BE9720E8CC7DD009D7055 /* ApplicationServices.framework */; }; - E45BE97D0E8CC7DD009D7055 /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E45BE9730E8CC7DD009D7055 /* AudioToolbox.framework */; }; - E45BE97E0E8CC7DD009D7055 /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E45BE9740E8CC7DD009D7055 /* Carbon.framework */; }; - E45BE97F0E8CC7DD009D7055 /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E45BE9750E8CC7DD009D7055 /* CoreAudio.framework */; }; - E45BE9800E8CC7DD009D7055 /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E45BE9760E8CC7DD009D7055 /* CoreFoundation.framework */; }; - E45BE9810E8CC7DD009D7055 /* CoreServices.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E45BE9770E8CC7DD009D7055 /* CoreServices.framework */; }; - E45BE9830E8CC7DD009D7055 /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E45BE9790E8CC7DD009D7055 /* OpenGL.framework */; }; - E45BE9840E8CC7DD009D7055 /* QuickTime.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E45BE97A0E8CC7DD009D7055 /* QuickTime.framework */; }; - E4B69E200A3A1BDC003C02F2 /* main.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E4B69E1D0A3A1BDC003C02F2 /* main.cpp */; }; - E4B69E210A3A1BDC003C02F2 /* testApp.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E4B69E1E0A3A1BDC003C02F2 /* testApp.cpp */; }; - E4C2424710CC5A17004149E2 /* AppKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E4C2424410CC5A17004149E2 /* AppKit.framework */; }; - E4C2424810CC5A17004149E2 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E4C2424510CC5A17004149E2 /* Cocoa.framework */; }; - E4C2424910CC5A17004149E2 /* IOKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E4C2424610CC5A17004149E2 /* IOKit.framework */; }; - E4EB6799138ADC1D00A09F29 /* GLUT.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BBAB23BE13894E4700AA2426 /* GLUT.framework */; }; -/* End PBXBuildFile section */ - -/* Begin PBXContainerItemProxy section */ - E4328147138ABC890047C5CB /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = E4328143138ABC890047C5CB /* openFrameworksLib.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = E4B27C1510CBEB8E00536013; - remoteInfo = openFrameworks; - }; - E4EEB9AB138B136A00A80321 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = E4328143138ABC890047C5CB /* openFrameworksLib.xcodeproj */; - proxyType = 1; - remoteGlobalIDString = E4B27C1410CBEB8E00536013; - remoteInfo = openFrameworks; - }; -/* End PBXContainerItemProxy section */ - -/* Begin PBXCopyFilesBuildPhase section */ - E4C2427710CC5ABF004149E2 /* CopyFiles */ = { - isa = PBXCopyFilesBuildPhase; - buildActionMask = 2147483647; - dstPath = ""; - dstSubfolderSpec = 10; - files = ( - BBAB23CB13894F3D00AA2426 /* GLUT.framework in CopyFiles */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXCopyFilesBuildPhase section */ - -/* Begin PBXFileReference section */ - 60BF71D915271F3F00604CB3 /* .gitignore */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = .gitignore; sourceTree = ""; }; - 60BF71DA15271F3F00604CB3 /* LICENSE */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = LICENSE; sourceTree = ""; }; - 60BF71DC15271F3F00604CB3 /* ofxBvh.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ofxBvh.cpp; sourceTree = ""; }; - 60BF71DD15271F3F00604CB3 /* ofxBvh.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ofxBvh.h; sourceTree = ""; }; - BBAB23BE13894E4700AA2426 /* GLUT.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = GLUT.framework; path = ../../../libs/glut/lib/osx/GLUT.framework; sourceTree = ""; }; - E4328143138ABC890047C5CB /* openFrameworksLib.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = openFrameworksLib.xcodeproj; path = ../../../libs/openFrameworksCompiled/project/osx/openFrameworksLib.xcodeproj; sourceTree = SOURCE_ROOT; }; - E45BE9710E8CC7DD009D7055 /* AGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AGL.framework; path = /System/Library/Frameworks/AGL.framework; sourceTree = ""; }; - E45BE9720E8CC7DD009D7055 /* ApplicationServices.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = ApplicationServices.framework; path = /System/Library/Frameworks/ApplicationServices.framework; sourceTree = ""; }; - E45BE9730E8CC7DD009D7055 /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioToolbox.framework; path = /System/Library/Frameworks/AudioToolbox.framework; sourceTree = ""; }; - E45BE9740E8CC7DD009D7055 /* Carbon.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Carbon.framework; path = /System/Library/Frameworks/Carbon.framework; sourceTree = ""; }; - E45BE9750E8CC7DD009D7055 /* CoreAudio.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreAudio.framework; path = /System/Library/Frameworks/CoreAudio.framework; sourceTree = ""; }; - E45BE9760E8CC7DD009D7055 /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreFoundation.framework; path = /System/Library/Frameworks/CoreFoundation.framework; sourceTree = ""; }; - E45BE9770E8CC7DD009D7055 /* CoreServices.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreServices.framework; path = /System/Library/Frameworks/CoreServices.framework; sourceTree = ""; }; - E45BE9790E8CC7DD009D7055 /* OpenGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGL.framework; path = /System/Library/Frameworks/OpenGL.framework; sourceTree = ""; }; - E45BE97A0E8CC7DD009D7055 /* QuickTime.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuickTime.framework; path = /System/Library/Frameworks/QuickTime.framework; sourceTree = ""; }; - E4B69B5B0A3A1756003C02F2 /* example-pen-graphicsDebug.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "example-pen-graphicsDebug.app"; sourceTree = BUILT_PRODUCTS_DIR; }; - E4B69E1D0A3A1BDC003C02F2 /* main.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = main.cpp; path = src/main.cpp; sourceTree = SOURCE_ROOT; }; - E4B69E1E0A3A1BDC003C02F2 /* testApp.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.cpp; fileEncoding = 4; name = testApp.cpp; path = src/testApp.cpp; sourceTree = SOURCE_ROOT; }; - E4B69E1F0A3A1BDC003C02F2 /* testApp.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = testApp.h; path = src/testApp.h; sourceTree = SOURCE_ROOT; }; - E4B6FCAD0C3E899E008CF71C /* openFrameworks-Info.plist */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text.plist.xml; path = "openFrameworks-Info.plist"; sourceTree = ""; }; - E4C2424410CC5A17004149E2 /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = /System/Library/Frameworks/AppKit.framework; sourceTree = ""; }; - E4C2424510CC5A17004149E2 /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = /System/Library/Frameworks/Cocoa.framework; sourceTree = ""; }; - E4C2424610CC5A17004149E2 /* IOKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = IOKit.framework; path = /System/Library/Frameworks/IOKit.framework; sourceTree = ""; }; - E4EB691F138AFCF100A09F29 /* CoreOF.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = CoreOF.xcconfig; path = ../../../libs/openFrameworksCompiled/project/osx/CoreOF.xcconfig; sourceTree = SOURCE_ROOT; }; - E4EB6923138AFD0F00A09F29 /* Project.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = Project.xcconfig; sourceTree = ""; }; -/* End PBXFileReference section */ - -/* Begin PBXFrameworksBuildPhase section */ - E4B69B590A3A1756003C02F2 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - E4EB6799138ADC1D00A09F29 /* GLUT.framework in Frameworks */, - E4328149138ABC9F0047C5CB /* openFrameworksDebug.a in Frameworks */, - E45BE97B0E8CC7DD009D7055 /* AGL.framework in Frameworks */, - E45BE97C0E8CC7DD009D7055 /* ApplicationServices.framework in Frameworks */, - E45BE97D0E8CC7DD009D7055 /* AudioToolbox.framework in Frameworks */, - E45BE97E0E8CC7DD009D7055 /* Carbon.framework in Frameworks */, - E45BE97F0E8CC7DD009D7055 /* CoreAudio.framework in Frameworks */, - E45BE9800E8CC7DD009D7055 /* CoreFoundation.framework in Frameworks */, - E45BE9810E8CC7DD009D7055 /* CoreServices.framework in Frameworks */, - E45BE9830E8CC7DD009D7055 /* OpenGL.framework in Frameworks */, - E45BE9840E8CC7DD009D7055 /* QuickTime.framework in Frameworks */, - E4C2424710CC5A17004149E2 /* AppKit.framework in Frameworks */, - E4C2424810CC5A17004149E2 /* Cocoa.framework in Frameworks */, - E4C2424910CC5A17004149E2 /* IOKit.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXFrameworksBuildPhase section */ - -/* Begin PBXGroup section */ - 60BF71D815271F3F00604CB3 /* ofxBvh */ = { - isa = PBXGroup; - children = ( - 60BF71D915271F3F00604CB3 /* .gitignore */, - 60BF71DA15271F3F00604CB3 /* LICENSE */, - 60BF71DB15271F3F00604CB3 /* src */, - ); - name = ofxBvh; - path = ../../../addons/ofxBvh; - sourceTree = ""; - }; - 60BF71DB15271F3F00604CB3 /* src */ = { - isa = PBXGroup; - children = ( - 60BF71DC15271F3F00604CB3 /* ofxBvh.cpp */, - 60BF71DD15271F3F00604CB3 /* ofxBvh.h */, - ); - path = src; - sourceTree = ""; - }; - BB4B014C10F69532006C3DED /* addons */ = { - isa = PBXGroup; - children = ( - 60BF71D815271F3F00604CB3 /* ofxBvh */, - ); - name = addons; - sourceTree = ""; - }; - BBAB23C913894ECA00AA2426 /* system frameworks */ = { - isa = PBXGroup; - children = ( - E4C2424410CC5A17004149E2 /* AppKit.framework */, - E4C2424510CC5A17004149E2 /* Cocoa.framework */, - E4C2424610CC5A17004149E2 /* IOKit.framework */, - E45BE9710E8CC7DD009D7055 /* AGL.framework */, - E45BE9720E8CC7DD009D7055 /* ApplicationServices.framework */, - E45BE9730E8CC7DD009D7055 /* AudioToolbox.framework */, - E45BE9740E8CC7DD009D7055 /* Carbon.framework */, - E45BE9750E8CC7DD009D7055 /* CoreAudio.framework */, - E45BE9760E8CC7DD009D7055 /* CoreFoundation.framework */, - E45BE9770E8CC7DD009D7055 /* CoreServices.framework */, - E45BE9790E8CC7DD009D7055 /* OpenGL.framework */, - E45BE97A0E8CC7DD009D7055 /* QuickTime.framework */, - ); - name = "system frameworks"; - sourceTree = ""; - }; - BBAB23CA13894EDB00AA2426 /* 3rd party frameworks */ = { - isa = PBXGroup; - children = ( - BBAB23BE13894E4700AA2426 /* GLUT.framework */, - ); - name = "3rd party frameworks"; - sourceTree = ""; - }; - E4328144138ABC890047C5CB /* Products */ = { - isa = PBXGroup; - children = ( - E4328148138ABC890047C5CB /* openFrameworksDebug.a */, - ); - name = Products; - sourceTree = ""; - }; - E45BE5980E8CC70C009D7055 /* frameworks */ = { - isa = PBXGroup; - children = ( - BBAB23CA13894EDB00AA2426 /* 3rd party frameworks */, - BBAB23C913894ECA00AA2426 /* system frameworks */, - ); - name = frameworks; - sourceTree = ""; - }; - E4B69B4A0A3A1720003C02F2 = { - isa = PBXGroup; - children = ( - E4B69E1C0A3A1BDC003C02F2 /* src */, - E4EEC9E9138DF44700A80321 /* openFrameworks */, - BB4B014C10F69532006C3DED /* addons */, - E45BE5980E8CC70C009D7055 /* frameworks */, - E4B69B5B0A3A1756003C02F2 /* example-pen-graphicsDebug.app */, - ); - sourceTree = ""; - }; - E4B69E1C0A3A1BDC003C02F2 /* src */ = { - isa = PBXGroup; - children = ( - E4B69E1D0A3A1BDC003C02F2 /* main.cpp */, - E4B69E1F0A3A1BDC003C02F2 /* testApp.h */, - E4B69E1E0A3A1BDC003C02F2 /* testApp.cpp */, - ); - path = src; - sourceTree = SOURCE_ROOT; - }; - E4EEC9E9138DF44700A80321 /* openFrameworks */ = { - isa = PBXGroup; - children = ( - E4EB6923138AFD0F00A09F29 /* Project.xcconfig */, - E4EB691F138AFCF100A09F29 /* CoreOF.xcconfig */, - E4328143138ABC890047C5CB /* openFrameworksLib.xcodeproj */, - E4B6FCAD0C3E899E008CF71C /* openFrameworks-Info.plist */, - ); - name = openFrameworks; - sourceTree = ""; - }; -/* End PBXGroup section */ - -/* Begin PBXNativeTarget section */ - E4B69B5A0A3A1756003C02F2 /* example-pen-graphics */ = { - isa = PBXNativeTarget; - buildConfigurationList = E4B69B5F0A3A1757003C02F2 /* Build configuration list for PBXNativeTarget "example-pen-graphics" */; - buildPhases = ( - E4B69B580A3A1756003C02F2 /* Sources */, - E4B69B590A3A1756003C02F2 /* Frameworks */, - E4B6FFFD0C3F9AB9008CF71C /* ShellScript */, - E4C2427710CC5ABF004149E2 /* CopyFiles */, - ); - buildRules = ( - ); - dependencies = ( - E4EEB9AC138B136A00A80321 /* PBXTargetDependency */, - ); - name = "example-pen-graphics"; - productName = myOFApp; - productReference = E4B69B5B0A3A1756003C02F2 /* example-pen-graphicsDebug.app */; - productType = "com.apple.product-type.application"; - }; -/* End PBXNativeTarget section */ - -/* Begin PBXProject section */ - E4B69B4C0A3A1720003C02F2 /* Project object */ = { - isa = PBXProject; - buildConfigurationList = E4B69B4D0A3A1720003C02F2 /* Build configuration list for PBXProject "example-pen-graphics" */; - compatibilityVersion = "Xcode 2.4"; - developmentRegion = English; - hasScannedForEncodings = 0; - knownRegions = ( - English, - Japanese, - French, - German, - ); - mainGroup = E4B69B4A0A3A1720003C02F2; - productRefGroup = E4B69B4A0A3A1720003C02F2; - projectDirPath = ""; - projectReferences = ( - { - ProductGroup = E4328144138ABC890047C5CB /* Products */; - ProjectRef = E4328143138ABC890047C5CB /* openFrameworksLib.xcodeproj */; - }, - ); - projectRoot = ""; - targets = ( - E4B69B5A0A3A1756003C02F2 /* example-pen-graphics */, - ); - }; -/* End PBXProject section */ - -/* Begin PBXReferenceProxy section */ - E4328148138ABC890047C5CB /* openFrameworksDebug.a */ = { - isa = PBXReferenceProxy; - fileType = archive.ar; - path = openFrameworksDebug.a; - remoteRef = E4328147138ABC890047C5CB /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; -/* End PBXReferenceProxy section */ - -/* Begin PBXShellScriptBuildPhase section */ - E4B6FFFD0C3F9AB9008CF71C /* ShellScript */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - ); - outputPaths = ( - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "cp -f ../../../libs/fmodex/lib/osx/libfmodex.dylib \"$TARGET_BUILD_DIR/$PRODUCT_NAME.app/Contents/MacOS/libfmodex.dylib\"; install_name_tool -change ./libfmodex.dylib @executable_path/libfmodex.dylib \"$TARGET_BUILD_DIR/$PRODUCT_NAME.app/Contents/MacOS/$PRODUCT_NAME\";"; - }; -/* End PBXShellScriptBuildPhase section */ - -/* Begin PBXSourcesBuildPhase section */ - E4B69B580A3A1756003C02F2 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - E4B69E200A3A1BDC003C02F2 /* main.cpp in Sources */, - E4B69E210A3A1BDC003C02F2 /* testApp.cpp in Sources */, - 60BF71DE15271F3F00604CB3 /* ofxBvh.cpp in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXSourcesBuildPhase section */ - -/* Begin PBXTargetDependency section */ - E4EEB9AC138B136A00A80321 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = openFrameworks; - targetProxy = E4EEB9AB138B136A00A80321 /* PBXContainerItemProxy */; - }; -/* End PBXTargetDependency section */ - -/* Begin XCBuildConfiguration section */ - E4B69B4E0A3A1720003C02F2 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = E4EB6923138AFD0F00A09F29 /* Project.xcconfig */; - buildSettings = { - ARCHS = "$(NATIVE_ARCH)"; - CONFIGURATION_BUILD_DIR = "$(SRCROOT)/bin/"; - COPY_PHASE_STRIP = NO; - DEAD_CODE_STRIPPING = YES; - GCC_AUTO_VECTORIZATION = YES; - GCC_ENABLE_SSE3_EXTENSIONS = YES; - GCC_ENABLE_SUPPLEMENTAL_SSE3_INSTRUCTIONS = YES; - GCC_INLINES_ARE_PRIVATE_EXTERN = NO; - GCC_MODEL_TUNING = G5; - GCC_SYMBOLS_PRIVATE_EXTERN = NO; - GCC_WARN_ABOUT_DEPRECATED_FUNCTIONS = NO; - GCC_WARN_ABOUT_INVALID_OFFSETOF_MACRO = NO; - GCC_WARN_ALLOW_INCOMPLETE_PROTOCOL = NO; - GCC_WARN_UNINITIALIZED_AUTOS = NO; - GCC_WARN_UNUSED_VALUE = NO; - GCC_WARN_UNUSED_VARIABLE = NO; - OTHER_CPLUSPLUSFLAGS = ( - "-D__MACOSX_CORE__", - "-lpthread", - ); - }; - name = Debug; - }; - E4B69B4F0A3A1720003C02F2 /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = E4EB6923138AFD0F00A09F29 /* Project.xcconfig */; - buildSettings = { - ARCHS = "$(NATIVE_ARCH)"; - CONFIGURATION_BUILD_DIR = "$(SRCROOT)/bin/"; - COPY_PHASE_STRIP = YES; - DEAD_CODE_STRIPPING = YES; - GCC_AUTO_VECTORIZATION = YES; - GCC_ENABLE_SSE3_EXTENSIONS = YES; - GCC_ENABLE_SUPPLEMENTAL_SSE3_INSTRUCTIONS = YES; - GCC_INLINES_ARE_PRIVATE_EXTERN = NO; - GCC_MODEL_TUNING = G5; - GCC_OPTIMIZATION_LEVEL = 3; - GCC_SYMBOLS_PRIVATE_EXTERN = NO; - GCC_UNROLL_LOOPS = YES; - GCC_WARN_ABOUT_DEPRECATED_FUNCTIONS = NO; - GCC_WARN_ABOUT_INVALID_OFFSETOF_MACRO = NO; - GCC_WARN_ALLOW_INCOMPLETE_PROTOCOL = NO; - GCC_WARN_UNINITIALIZED_AUTOS = NO; - GCC_WARN_UNUSED_VALUE = NO; - GCC_WARN_UNUSED_VARIABLE = NO; - OTHER_CPLUSPLUSFLAGS = ( - "-D__MACOSX_CORE__", - "-lpthread", - ); - }; - name = Release; - }; - E4B69B600A3A1757003C02F2 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - COPY_PHASE_STRIP = NO; - FRAMEWORK_SEARCH_PATHS = ( - "$(inherited)", - "$(FRAMEWORK_SEARCH_PATHS_QUOTED_FOR_TARGET_1)", - ); - FRAMEWORK_SEARCH_PATHS_QUOTED_FOR_TARGET_1 = "\"$(SRCROOT)/../../../libs/glut/lib/osx\""; - GCC_DYNAMIC_NO_PIC = NO; - GCC_ENABLE_FIX_AND_CONTINUE = YES; - GCC_GENERATE_DEBUGGING_SYMBOLS = YES; - GCC_MODEL_TUNING = G4; - GCC_PRECOMPILE_PREFIX_HEADER = YES; - GCC_PREFIX_HEADER = "$(SYSTEM_LIBRARY_DIR)/Frameworks/Carbon.framework/Headers/Carbon.h"; - INFOPLIST_FILE = "openFrameworks-Info.plist"; - INSTALL_PATH = "$(HOME)/Applications"; - LIBRARY_SEARCH_PATHS = ( - "$(inherited)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_1)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_2)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_3)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_4)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_5)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_6)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_7)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_8)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_9)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_10)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_11)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_12)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_13)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_14)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_15)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_2)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_3)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_7)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_8)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_9)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_10)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_11)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_12)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_13)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_16)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_17)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_18)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_19)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_20)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_21)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_22)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_23)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_24)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_25)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_26)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_27)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_28)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_29)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_30)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_31)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_32)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_33)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_34)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_35)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_36)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_37)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_38)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_39)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_40)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_41)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_42)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_43)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_44)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_45)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_46)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_47)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_48)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_49)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_50)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_51)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_52)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_1)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_2)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_3)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_4)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_5)", - ); - LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_1 = "\"$(SRCROOT)/../../../addons/ofxTimeline/libs/kiss/lib/linux\""; - LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_2 = "\"$(SRCROOT)/../../../addons/ofxTimeline/libs/kiss/lib/linux64\""; - LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_3 = "\"$(SRCROOT)/../../../addons/ofxTimeline/libs/sndfile/linux/lib\""; - LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_4 = "\"$(SRCROOT)/../../../addons/ofxTimeline/libs/sndfile/osx/lib\""; - LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_5 = "\"$(SRCROOT)/../../../addons/ofxTimeline/libs/sndfile/win32/lib\""; - PREBINDING = NO; - PRODUCT_NAME = "example-pen-graphicsDebug"; - SDKROOT = "$(DEVELOPER_SDK_DIR)/MacOSX10.6.sdk"; - WRAPPER_EXTENSION = app; - }; - name = Debug; - }; - E4B69B610A3A1757003C02F2 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - COPY_PHASE_STRIP = YES; - FRAMEWORK_SEARCH_PATHS = ( - "$(inherited)", - "$(FRAMEWORK_SEARCH_PATHS_QUOTED_FOR_TARGET_1)", - ); - FRAMEWORK_SEARCH_PATHS_QUOTED_FOR_TARGET_1 = "\"$(SRCROOT)/../../../libs/glut/lib/osx\""; - GCC_ENABLE_FIX_AND_CONTINUE = NO; - GCC_GENERATE_DEBUGGING_SYMBOLS = NO; - GCC_MODEL_TUNING = G4; - GCC_PRECOMPILE_PREFIX_HEADER = YES; - GCC_PREFIX_HEADER = "$(SYSTEM_LIBRARY_DIR)/Frameworks/Carbon.framework/Headers/Carbon.h"; - INFOPLIST_FILE = "openFrameworks-Info.plist"; - INSTALL_PATH = "$(HOME)/Applications"; - LIBRARY_SEARCH_PATHS = ( - "$(inherited)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_1)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_2)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_3)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_4)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_5)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_6)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_7)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_8)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_9)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_10)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_11)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_12)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_13)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_14)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_15)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_2)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_1)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_3)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_7)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_8)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_9)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_10)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_11)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_12)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_13)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_16)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_17)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_18)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_19)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_20)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_21)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_22)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_23)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_24)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_25)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_26)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_27)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_28)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_29)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_30)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_31)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_32)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_33)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_34)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_35)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_36)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_37)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_38)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_39)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_40)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_41)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_42)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_43)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_44)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_45)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_46)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_47)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_48)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_49)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_50)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_51)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_1)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_2)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_3)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_4)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_5)", - ); - LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_1 = "\"$(SRCROOT)/../../../addons/ofxTimeline/libs/kiss/lib/linux\""; - LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_2 = "\"$(SRCROOT)/../../../addons/ofxTimeline/libs/kiss/lib/linux64\""; - LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_3 = "\"$(SRCROOT)/../../../addons/ofxTimeline/libs/sndfile/linux/lib\""; - LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_4 = "\"$(SRCROOT)/../../../addons/ofxTimeline/libs/sndfile/osx/lib\""; - LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_5 = "\"$(SRCROOT)/../../../addons/ofxTimeline/libs/sndfile/win32/lib\""; - PREBINDING = NO; - PRODUCT_NAME = "example-pen-graphics"; - SDKROOT = "$(DEVELOPER_SDK_DIR)/MacOSX10.6.sdk"; - WRAPPER_EXTENSION = app; - }; - name = Release; - }; -/* End XCBuildConfiguration section */ - -/* Begin XCConfigurationList section */ - E4B69B4D0A3A1720003C02F2 /* Build configuration list for PBXProject "example-pen-graphics" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - E4B69B4E0A3A1720003C02F2 /* Debug */, - E4B69B4F0A3A1720003C02F2 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - E4B69B5F0A3A1757003C02F2 /* Build configuration list for PBXNativeTarget "example-pen-graphics" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - E4B69B600A3A1757003C02F2 /* Debug */, - E4B69B610A3A1757003C02F2 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; -/* End XCConfigurationList section */ - }; - rootObject = E4B69B4C0A3A1720003C02F2 /* Project object */; + "_OFProjectGeneratorVersion": "0.103.0", + "archiveVersion": "1", + "classes": {}, + "objectVersion": "54", + "objects": { + "191CD6FA2847E21E0085CBB6": { + "fileEncoding": "4", + "isa": "PBXFileReference", + "lastKnownFileType": "text.plist.entitlements", + "path": "of.entitlements", + "sourceTree": "" + }, + "191EF70929D778A400F35F26": { + "isa": "PBXFileReference", + "lastKnownFileType": "folder", + "name": "openFrameworks", + "path": "../../../../libs/openFrameworks", + "sourceTree": "SOURCE_ROOT" + }, + "19B789C429E5AB4A0082E9B8": { + "alwaysOutOfDate": "1", + "buildActionMask": "2147483647", + "files": [], + "inputFileListPaths": [], + "inputPaths": [], + "isa": "PBXShellScriptBuildPhase", + "outputFileListPaths": [], + "outputPaths": [], + "runOnlyForDeploymentPostprocessing": "0", + "shellPath": "/bin/sh", + "shellScript": "\"$OF_PATH/scripts/osx/xcode_project.sh\"\n", + "showEnvVarsInLog": "0" + }, + "29E859B8-7636-4EDB-B45D-2F1313A5849A": { + "fileRef": "AE875D03-9291-402C-B7D1-368D667E1351", + "isa": "PBXBuildFile" + }, + "36CAD6F5-4F09-44F3-8ECF-CD9C3122E857": { + "children": [ + "B5204BA7-1E6E-46B7-A012-D4F1F72F57FD" + ], + "isa": "PBXGroup", + "name": "local_addons", + "path": "", + "sourceTree": "SOURCE_ROOT" + }, + "477F6143-5D87-4A48-A4D9-50EEF687E1DE": { + "fileEncoding": "4", + "isa": "PBXFileReference", + "lastKnownFileType": "sourcecode.cpp.h", + "name": "ofxBvh.h", + "path": "../ofxBvh/src/ofxBvh.h", + "sourceTree": "SOURCE_ROOT" + }, + "54063683-6F23-45CF-AD5F-A8FFD7A00195": { + "fileEncoding": "4", + "isa": "PBXFileReference", + "lastKnownFileType": "sourcecode.cpp.cpp", + "name": "testApp.cpp", + "sourceTree": "" + }, + "68E49E5E-0536-4955-B144-FA5AC4F1BE03": { + "fileEncoding": "4", + "isa": "PBXFileReference", + "lastKnownFileType": "sourcecode.cpp.h", + "name": "testApp.h", + "sourceTree": "" + }, + "AD7E4701-E012-467E-B335-FEF0977E4F7B": { + "fileRef": "54063683-6F23-45CF-AD5F-A8FFD7A00195", + "isa": "PBXBuildFile" + }, + "AE875D03-9291-402C-B7D1-368D667E1351": { + "fileEncoding": "4", + "isa": "PBXFileReference", + "lastKnownFileType": "sourcecode.cpp.cpp", + "name": "ofxBvh.cpp", + "path": "../ofxBvh/src/ofxBvh.cpp", + "sourceTree": "SOURCE_ROOT" + }, + "B5204BA7-1E6E-46B7-A012-D4F1F72F57FD": { + "children": [ + "FF63A4CD-6B8D-484C-A0CB-8BA65D0DB1F0" + ], + "isa": "PBXGroup", + "name": "ofxBvh", + "path": "../ofxBvh", + "sourceTree": "SOURCE_ROOT" + }, + "BB4B014C10F69532006C3DED": { + "children": [], + "isa": "PBXGroup", + "name": "addons", + "path": "../../../../addons", + "sourceTree": "SOURCE_ROOT" + }, + "C9134D8F-6931-47DF-9E23-741CE64C6F11": { + "fileEncoding": "4", + "isa": "PBXFileReference", + "lastKnownFileType": "folder", + "name": "data", + "path": "bin/data", + "sourceTree": "SOURCE_ROOT" + }, + "E42962A92163ECCD00A6A9E2": { + "alwaysOutOfDate": "1", + "buildActionMask": "2147483647", + "files": [], + "inputPaths": [], + "isa": "PBXShellScriptBuildPhase", + "name": "Run Script — Compile OF", + "outputPaths": [], + "runOnlyForDeploymentPostprocessing": "0", + "shellPath": "/bin/sh", + "shellScript": "$OF_CORE_BUILD_COMMAND\n", + "showEnvVarsInLog": "0" + }, + "E4A5B60F29BAAAE400C2D356": { + "buildActionMask": "2147483647", + "dstPath": "", + "dstSubfolderSpec": "6", + "files": [], + "isa": "PBXCopyFilesBuildPhase", + "runOnlyForDeploymentPostprocessing": "0" + }, + "E4B69B4A0A3A1720003C02F2": { + "children": [ + "191CD6FA2847E21E0085CBB6", + "E4B6FCAD0C3E899E008CF71C", + "E4EB6923138AFD0F00A09F29", + "E4B69E1C0A3A1BDC003C02F2", + "191EF70929D778A400F35F26", + "BB4B014C10F69532006C3DED", + "E4B69B5B0A3A1756003C02F2", + "36CAD6F5-4F09-44F3-8ECF-CD9C3122E857", + "C9134D8F-6931-47DF-9E23-741CE64C6F11" + ], + "isa": "PBXGroup", + "sourceTree": "" + }, + "E4B69B4C0A3A1720003C02F2": { + "attributes": { + "BuildIndependentTargetsInParallel": "YES", + "LastUpgradeCheck": "1540" + }, + "buildConfigurationList": "E4B69B4D0A3A1720003C02F2", + "compatibilityVersion": "Xcode 3.2", + "developmentRegion": "en", + "hasScannedForEncodings": "0", + "isa": "PBXProject", + "knownRegions": [ + "en", + "Base" + ], + "mainGroup": "E4B69B4A0A3A1720003C02F2", + "productRefGroup": "E4B69B4A0A3A1720003C02F2", + "projectDirPath": "", + "projectRoot": "", + "targets": [ + "E4B69B5A0A3A1756003C02F2" + ] + }, + "E4B69B4D0A3A1720003C02F2": { + "buildConfigurations": [ + "E4B69B4E0A3A1720003C02F2", + "E4B69B4F0A3A1720003C02F2" + ], + "defaultConfigurationIsVisible": "0", + "defaultConfigurationName": "Release", + "isa": "XCConfigurationList" + }, + "E4B69B4E0A3A1720003C02F2": { + "baseConfigurationReference": "E4EB6923138AFD0F00A09F29", + "buildSettings": { + "CODE_SIGN_ENTITLEMENTS": "of.entitlements", + "COPY_PHASE_STRIP": "NO", + "ENABLE_TESTABILITY": "YES", + "GCC_OPTIMIZATION_LEVEL": "0", + "GCC_WARN_UNUSED_VARIABLE": "NO", + "HEADER_SEARCH_PATHS": [ + "$(OF_CORE_HEADERS)", + "src" + ], + "OTHER_CPLUSPLUSFLAGS": "-D__MACOSX_CORE__" + }, + "isa": "XCBuildConfiguration", + "name": "Debug" + }, + "E4B69B4F0A3A1720003C02F2": { + "baseConfigurationReference": "E4EB6923138AFD0F00A09F29", + "buildSettings": { + "CODE_SIGN_ENTITLEMENTS": "of.entitlements", + "COPY_PHASE_STRIP": "YES", + "GCC_OPTIMIZATION_LEVEL": "3", + "GCC_UNROLL_LOOPS": "YES", + "HEADER_SEARCH_PATHS": [ + "$(OF_CORE_HEADERS)", + "src" + ], + "OTHER_CPLUSPLUSFLAGS": "-D__MACOSX_CORE__" + }, + "isa": "XCBuildConfiguration", + "name": "Release" + }, + "E4B69B580A3A1756003C02F2": { + "buildActionMask": "2147483647", + "files": [ + "E4B69E200A3A1BDC003C02F2", + "AD7E4701-E012-467E-B335-FEF0977E4F7B", + "29E859B8-7636-4EDB-B45D-2F1313A5849A" + ], + "isa": "PBXSourcesBuildPhase", + "runOnlyForDeploymentPostprocessing": "0" + }, + "E4B69B590A3A1756003C02F2": { + "buildActionMask": "2147483647", + "files": [], + "isa": "PBXFrameworksBuildPhase", + "runOnlyForDeploymentPostprocessing": "0" + }, + "E4B69B5A0A3A1756003C02F2": { + "buildConfigurationList": "E4B69B5F0A3A1757003C02F2", + "buildPhases": [ + "E42962A92163ECCD00A6A9E2", + "E4B69B580A3A1756003C02F2", + "E4B69B590A3A1756003C02F2", + "E4C2427710CC5ABF004149E2", + "E4A5B60F29BAAAE400C2D356", + "19B789C429E5AB4A0082E9B8" + ], + "buildRules": [], + "dependencies": [], + "isa": "PBXNativeTarget", + "name": "example-pen-graphics", + "productName": "myOFApp", + "productReference": "E4B69B5B0A3A1756003C02F2", + "productType": "com.apple.product-type.application" + }, + "E4B69B5B0A3A1756003C02F2": { + "explicitFileType": "wrapper.application", + "includeInIndex": "0", + "isa": "PBXFileReference", + "path": "example-pen-graphicsDebug.app", + "sourceTree": "BUILT_PRODUCTS_DIR" + }, + "E4B69B5F0A3A1757003C02F2": { + "buildConfigurations": [ + "E4B69B600A3A1757003C02F2", + "E4B69B610A3A1757003C02F2" + ], + "defaultConfigurationIsVisible": "0", + "defaultConfigurationName": "Release", + "isa": "XCConfigurationList" + }, + "E4B69B600A3A1757003C02F2": { + "baseConfigurationReference": "E4EB6923138AFD0F00A09F29", + "buildSettings": { + "ARCHS": "$(ARCHS_STANDARD)", + "COPY_PHASE_STRIP": "NO", + "FRAMEWORK_SEARCH_PATHS": "$(inherited)", + "GCC_DYNAMIC_NO_PIC": "NO", + "HEADER_SEARCH_PATHS": [ + "$(OF_CORE_HEADERS)", + "src", + "src", + "../ofxBvh/src" + ], + "LIBRARY_SEARCH_PATHS": "$(inherited)", + "OTHER_LDFLAGS": [ + "$(OF_CORE_LIBS)", + "$(OF_CORE_FRAMEWORKS)", + "$(LIB_OF_DEBUG)" + ] + }, + "isa": "XCBuildConfiguration", + "name": "Debug" + }, + "E4B69B610A3A1757003C02F2": { + "baseConfigurationReference": "E4EB6923138AFD0F00A09F29", + "buildSettings": { + "ARCHS": "$(ARCHS_STANDARD)", + "COPY_PHASE_STRIP": "YES", + "FRAMEWORK_SEARCH_PATHS": "$(inherited)", + "HEADER_SEARCH_PATHS": [ + "$(OF_CORE_HEADERS)", + "src", + "src", + "../ofxBvh/src" + ], + "LIBRARY_SEARCH_PATHS": "$(inherited)", + "OTHER_LDFLAGS": [ + "$(OF_CORE_LIBS)", + "$(OF_CORE_FRAMEWORKS)", + "$(LIB_OF_RELEASE)" + ], + "baseConfigurationReference": "E4EB6923138AFD0F00A09F29" + }, + "isa": "XCBuildConfiguration", + "name": "Release" + }, + "E4B69E1C0A3A1BDC003C02F2": { + "children": [ + "E4B69E1D0A3A1BDC003C02F2", + "54063683-6F23-45CF-AD5F-A8FFD7A00195", + "68E49E5E-0536-4955-B144-FA5AC4F1BE03" + ], + "isa": "PBXGroup", + "path": "src", + "sourceTree": "SOURCE_ROOT" + }, + "E4B69E1D0A3A1BDC003C02F2": { + "fileEncoding": "4", + "isa": "PBXFileReference", + "lastKnownFileType": "sourcecode.cpp.cpp", + "name": "main.cpp", + "path": "src/main.cpp", + "sourceTree": "SOURCE_ROOT" + }, + "E4B69E200A3A1BDC003C02F2": { + "fileRef": "E4B69E1D0A3A1BDC003C02F2", + "isa": "PBXBuildFile" + }, + "E4B6FCAD0C3E899E008CF71C": { + "fileEncoding": "4", + "isa": "PBXFileReference", + "lastKnownFileType": "text.plist.xml", + "path": "openFrameworks-Info.plist", + "sourceTree": "" + }, + "E4C2427710CC5ABF004149E2": { + "buildActionMask": "2147483647", + "dstPath": "", + "dstSubfolderSpec": "10", + "files": [], + "isa": "PBXCopyFilesBuildPhase", + "runOnlyForDeploymentPostprocessing": "0" + }, + "E4EB6923138AFD0F00A09F29": { + "fileEncoding": "4", + "isa": "PBXFileReference", + "lastKnownFileType": "text.xcconfig", + "path": "Project.xcconfig", + "sourceTree": "" + }, + "FF63A4CD-6B8D-484C-A0CB-8BA65D0DB1F0": { + "children": [ + "AE875D03-9291-402C-B7D1-368D667E1351", + "477F6143-5D87-4A48-A4D9-50EEF687E1DE" + ], + "isa": "PBXGroup", + "name": "src", + "path": "src", + "sourceTree": "" + } + }, + "rootObject": "E4B69B4C0A3A1720003C02F2" } diff --git a/example-pen-graphics/example-pen-graphics.xcodeproj/xcshareddata/xcschemes/example-pen-graphics Debug.xcscheme b/example-pen-graphics/example-pen-graphics.xcodeproj/xcshareddata/xcschemes/example-pen-graphics Debug.xcscheme new file mode 100644 index 0000000..84d13e8 --- /dev/null +++ b/example-pen-graphics/example-pen-graphics.xcodeproj/xcshareddata/xcschemes/example-pen-graphics Debug.xcscheme @@ -0,0 +1,104 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/example-pen-graphics/example-pen-graphics.xcodeproj/xcshareddata/xcschemes/example-pen-graphics Release.xcscheme b/example-pen-graphics/example-pen-graphics.xcodeproj/xcshareddata/xcschemes/example-pen-graphics Release.xcscheme new file mode 100644 index 0000000..4866fbd --- /dev/null +++ b/example-pen-graphics/example-pen-graphics.xcodeproj/xcshareddata/xcschemes/example-pen-graphics Release.xcscheme @@ -0,0 +1,104 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/example-pen-graphics/of.entitlements b/example-pen-graphics/of.entitlements new file mode 100644 index 0000000..f4fc128 --- /dev/null +++ b/example-pen-graphics/of.entitlements @@ -0,0 +1,24 @@ + + + + + com.apple.security.app-sandbox + + com.apple.security.device.audio-input + + com.apple.security.device.bluetooth + + com.apple.security.device.camera + + com.apple.security.device.usb + + com.apple.security.files.user-selected.read-write + + com.apple.security.network.client + + com.apple.security.network.server + + com.apple.security.print + + + diff --git a/example-pen-graphics/src/main.cpp b/example-pen-graphics/src/main.cpp index 7f55fb4..07619f2 100644 --- a/example-pen-graphics/src/main.cpp +++ b/example-pen-graphics/src/main.cpp @@ -1,17 +1,15 @@ #include "ofMain.h" #include "testApp.h" -#include "ofAppGlutWindow.h" //======================================================================== -int main( ){ - - ofAppGlutWindow window; - window.setGlutDisplayString("rgba double samples>=4 depth"); - ofSetupOpenGL(&window, 1280, 720, OF_WINDOW); // <-------- setup the GL context - - // this kicks off the running of my app - // can be OF_WINDOW or OF_FULLSCREEN - // pass in width and height too: - ofRunApp( new testApp()); - +int main() { + ofGLFWWindowSettings settings; + settings.setSize(1280, 720); + settings.setGLVersion(2, 1); + settings.windowMode = OF_WINDOW; + settings.numSamples = 4; + + auto window = ofCreateWindow(settings); + ofRunApp(window, std::make_shared()); + ofRunMainLoop(); } diff --git a/example-pen-graphics/src/testApp.cpp b/example-pen-graphics/src/testApp.cpp index 71c061c..b4620a1 100644 --- a/example-pen-graphics/src/testApp.cpp +++ b/example-pen-graphics/src/testApp.cpp @@ -1,6 +1,35 @@ #include "testApp.h" -const float trackDuration = 64.28; +#include + +namespace { + +const std::array kPerfumeMotionFiles = { + "bvhfiles/aachan.bvh", + "bvhfiles/kashiyuka.bvh", + "bvhfiles/nocchi.bvh" +}; + +const std::array kBundledMotionFiles = { + "../../../example-bvh/bin/data/A_test.bvh", + "../../../example-bvh/bin/data/B_test.bvh", + "../../../example-bvh/bin/data/C_test.bvh" +}; + +bool loadMotionFiles(std::array& motions) { + bool loaded = true; + for (size_t i = 0; i < motions.size(); ++i) { + if (!motions[i].load(kPerfumeMotionFiles[i])) { + ofLogWarning("example-pen-graphics") + << "Using bundled motion fallback for " << kPerfumeMotionFiles[i]; + loaded = motions[i].load(kBundledMotionFiles[i]) && loaded; + } + } + return loaded; +} + +} // namespace + ofVec3f center, center_t; ofVec3f campos, campos_t; ofVec3f offset, offset_v; @@ -9,7 +38,7 @@ class Tracker { public: - ofxBvh *bvh; + ofxBvh *bvh = nullptr; typedef vector Frame; deque track; @@ -34,39 +63,39 @@ class Tracker { // update vertexes flow - for (int i = 0; i < track.size(); i++) + for (size_t i = 0; i < track.size(); ++i) { - float delta = ofMap(i, 0, track.size(), 0, 1); + float delta = ofMap(static_cast(i), 0.0f, + static_cast(track.size()), 0.0f, 1.0f); Frame &f = track[i]; - for (int n = 0; n < f.size(); n++) + for (auto& v : f) { - ofVec3f &v = f[n]; - ofVec3f f = 0; + ofVec3f force{}; // gravity - f.y -= 2.5 * (1 - sin(pow(delta, 2) * PI)); - f.y += ofNoise(v.y * 0.0001 + offset.y) * 1.4; + force.y -= 2.5 * (1 - sin(pow(delta, 2) * PI)); + force.y += ofNoise(v.y * 0.0001 + offset.y) * 1.4; - f.x += ofSignedNoise(v.x * 0.0001 + offset.x) * 3; - f.z += ofSignedNoise(v.z * 0.0001 + offset.z) * 3; + force.x += ofSignedNoise(v.x * 0.0001 + offset.x) * 3; + force.z += ofSignedNoise(v.z * 0.0001 + offset.z) * 3; if (v.y < 0) { - f.y *= 0.02; - f.x *= 5; - f.y *= 5; + force.y *= 0.02; + force.x *= 5; + force.z *= 5; } - v += f; + v += force; } } Frame f; - for (int i = 0; i < bvh->getNumJoints(); i++) + for (int i = 0; i < bvh->getNumJoints(); ++i) { const ofxBvhJoint *j = bvh->getJoint(i); - for (int n = 0; n < j->getChildren().size(); n++) + for (size_t n = 0; n < j->getChildren().size(); ++n) { f.push_back(j->getPosition()); f.push_back(j->getChildren().at(n)->getPosition()); @@ -82,23 +111,24 @@ class Tracker // cache vertexes buffer.clear(); - for (int n = 0; n < 52; n += 2) + for (size_t n = 0; n + 1 < track.front().size(); n += 2) { ofVec3f norm; BufferArray arr; - for (int i = 0; i < track.size() - 1; i++) + for (size_t i = 0; i + 1 < track.size(); ++i) { - float delta = ofMap(i, 0, track.size(), 0.1, 1); + float delta = ofMap(static_cast(i), 0.0f, + static_cast(track.size()), 0.1f, 1.0f); Frame &f1 = track[i]; const ofVec3f &v1 = f1[n]; const ofVec3f &v2 = f1[n + 1]; const ofVec3f d = v1 - v2; - const ofVec3f c1 = d.crossed(ofVec3f(0, 1, 0)).normalized(); - const ofVec3f c = c1.crossed(d).normalized(); + const ofVec3f c1 = d.getCrossed(ofVec3f(0, 1, 0)).getNormalized(); + const ofVec3f c = c1.getCrossed(d).getNormalized(); // if (c.y < 0) c *= -1; if (i == 0) norm.set(c); @@ -130,14 +160,13 @@ class Tracker ofSetColor(255); - for (int i = 0; i < buffer.size(); i++) + for (size_t i = 0; i < buffer.size(); ++i) { const BufferArray &arr = buffer[i]; glBegin(GL_TRIANGLE_STRIP); - for (int n = 0; n < arr.size(); n++) + for (const auto& b : arr) { - const Buffer &b = arr[n]; glNormal3fv(b.norm.getPtr()); glVertex3fv(b.v1.getPtr()); glVertex3fv(b.v2.getPtr()); @@ -149,28 +178,26 @@ class Tracker ofSetColor(0); - for (int i = 0; i < buffer.size(); i++) + for (size_t i = 0; i < buffer.size(); ++i) { const BufferArray &arr = buffer[i]; glBegin(GL_LINE_STRIP); - for (int n = 0; n < arr.size(); n++) + for (const auto& b : arr) { - const Buffer &b = arr[n]; glNormal3fv(b.norm.getPtr()); glVertex3fv(b.v1.getPtr()); } glEnd(); } - for (int i = 0; i < buffer.size(); i++) + for (size_t i = 0; i < buffer.size(); ++i) { const BufferArray &arr = buffer[i]; glBegin(GL_LINE_STRIP); - for (int n = 0; n < arr.size(); n++) + for (const auto& b : arr) { - const Buffer &b = arr[n]; glNormal3fv(b.norm.getPtr()); glVertex3fv(b.v2.getPtr()); } @@ -182,7 +209,7 @@ class Tracker Frame &f = track[0]; glBegin(GL_LINES); - for (int n = 0; n < f.size(); n += 2) + for (size_t n = 0; n + 1 < f.size(); n += 2) { ofVec3f &v1 = f[n]; ofVec3f &v2 = f[n + 1]; @@ -199,7 +226,7 @@ class Tracker }; -vector trackers; +vector> trackers; //-------------------------------------------------------------- void testApp::setup() @@ -212,32 +239,32 @@ void testApp::setup() ofBackground(255); - bvh.resize(3); - - // You have to get motion and sound data from http://www.perfume-global.com + assetsReady = loadMotionFiles(bvh); - // setup bvh - bvh[0].load("bvhfiles/aachan.bvh"); - bvh[1].load("bvhfiles/kashiyuka.bvh"); - bvh[2].load("bvhfiles/nocchi.bvh"); - - for (int i = 0; i < bvh.size(); i++) + for (auto& motion : bvh) { - bvh[i].setFrame(4); + motion.setFrame(4); } - track.loadSound("Perfume_globalsite_sound.wav"); - track.setLoop(true); - track.play(); + audioReady = ofFile::doesFileExist("Perfume_globalsite_sound.wav") + && track.load("Perfume_globalsite_sound.wav"); + if (audioReady) { + track.setLoop(true); + track.play(); + } else { + ofLogNotice("example-pen-graphics") + << "Audio file not found; using a silent internal clock."; + } // setup tracker - for (int i = 0; i < bvh.size(); i++) + if (assetsReady) { - ofxBvh &b = bvh[i]; - - Tracker *t = new Tracker; - t->setup(&b); - trackers.push_back(t); + for (auto& motion : bvh) + { + auto tracker = std::make_unique(); + tracker->setup(&motion); + trackers.push_back(std::move(tracker)); + } } offset.x = ofRandom(1); @@ -253,25 +280,29 @@ void testApp::setup() //-------------------------------------------------------------- void testApp::update() { - float t = (track.getPosition() * trackDuration); - t = t / bvh[0].getDuration(); + if (!assetsReady) return; + const float motionDuration = bvh[0].getDuration(); + const float motionSeconds = audioReady + ? track.getPosition() * track.getDuration() + : std::fmod(ofGetElapsedTimef(), motionDuration); + const float t = ofClamp(motionSeconds / motionDuration, 0.0f, 1.0f); center_t.set(0, 0, 0); - for (int i = 0; i < bvh.size(); i++) + for (auto& motion : bvh) { - bvh[i].setPosition(t); - bvh[i].update(); + motion.setPosition(t); + motion.update(); - center_t += bvh[i].getJoint(0)->getPosition(); + center_t += motion.getJoint(0)->getPosition(); } center_t /= 3; center += (center_t - center) * 0.01; - for (int i = 0; i < trackers.size(); i++) + for (auto& tracker : trackers) { - trackers[i]->update(); + tracker->update(); } offset += offset_v; @@ -312,16 +343,16 @@ void testApp::draw(){ { ofPushMatrix(); glTranslatef(x * 500, 0, y * 500); - ofLine(10, 0, 0, -10, 0, 0); - ofLine(0, 0, 10, 0, 0, -10); + ofDrawLine(10, 0, 0, -10, 0, 0); + ofDrawLine(0, 0, 10, 0, 0, -10); ofPopMatrix(); } } ofSetColor(ofColor::white, 80); - for (int i = 0; i < trackers.size(); i++) + for (auto& tracker : trackers) { - trackers[i]->draw(); + tracker->draw(); } } ofPopMatrix(); @@ -329,6 +360,13 @@ void testApp::draw(){ cam.end(); light.disable(); + ofDisableDepthTest(); + ofSetColor(20); + + if (!assetsReady) + ofDrawBitmapString("Motion data is missing. See README.md.", 10, 20); + else if (!audioReady) + ofDrawBitmapString("Audio data is missing; running with a silent clock.", 10, 20); } diff --git a/example-pen-graphics/src/testApp.h b/example-pen-graphics/src/testApp.h index 1daa57f..6d384af 100644 --- a/example-pen-graphics/src/testApp.h +++ b/example-pen-graphics/src/testApp.h @@ -3,26 +3,30 @@ #include "ofMain.h" #include "ofxBvh.h" -class testApp : public ofBaseApp{ +#include + +class testApp : public ofBaseApp { public: - void setup(); - void update(); - void draw(); + void setup() override; + void update() override; + void draw() override; - void keyPressed (int key); - void keyReleased(int key); - void mouseMoved(int x, int y ); - void mouseDragged(int x, int y, int button); - void mousePressed(int x, int y, int button); - void mouseReleased(int x, int y, int button); - void windowResized(int w, int h); - void dragEvent(ofDragInfo dragInfo); - void gotMessage(ofMessage msg); + void keyPressed(int key) override; + void keyReleased(int key) override; + void mouseMoved(int x, int y) override; + void mouseDragged(int x, int y, int button) override; + void mousePressed(int x, int y, int button) override; + void mouseReleased(int x, int y, int button) override; + void windowResized(int w, int h) override; + void dragEvent(ofDragInfo dragInfo) override; + void gotMessage(ofMessage msg) override; ofSoundPlayer track; - vector bvh; + std::array bvh; ofCamera cam; ofLight light; + bool assetsReady = false; + bool audioReady = false; }; diff --git a/example-sync-sound/LICENSE b/example-sync-sound/LICENSE index 1724108..56e2ae4 100644 --- a/example-sync-sound/LICENSE +++ b/example-sync-sound/LICENSE @@ -1,4 +1,6 @@ -Copyright (c) 2012 Perfume Dev Team +Copyright (c) 2012 Daito Manabe + +Originally published under the Perfume Dev Team name. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the diff --git a/example-sync-sound/Makefile b/example-sync-sound/Makefile new file mode 100644 index 0000000..14403c4 --- /dev/null +++ b/example-sync-sound/Makefile @@ -0,0 +1,10 @@ +# Attempt to load project-specific configuration. +ifneq ($(wildcard config.make),) + include config.make +endif + +ifndef OF_ROOT + OF_ROOT=../../../.. +endif + +include $(OF_ROOT)/libs/openFrameworksCompiled/project/makefileCommon/compile.project.mk diff --git a/example-sync-sound/Project.xcconfig b/example-sync-sound/Project.xcconfig index c10b9e5..7c338e1 100644 --- a/example-sync-sound/Project.xcconfig +++ b/example-sync-sound/Project.xcconfig @@ -1,9 +1,88 @@ //THE PATH TO THE ROOT OF OUR OF PATH RELATIVE TO THIS PROJECT. //THIS NEEDS TO BE DEFINED BEFORE CoreOF.xcconfig IS INCLUDED -OF_PATH = ../../.. +OF_PATH = ../../../.. //THIS HAS ALL THE HEADER AND LIBS FOR OF CORE -#include "../../../libs/openFrameworksCompiled/project/osx/CoreOF.xcconfig" +#include "../../../../libs/openFrameworksCompiled/project/osx/CoreOF.xcconfig" -OTHER_LDFLAGS = $(OF_CORE_LIBS) +//UNCOMMENT BELOW TO ENABLE C++ 17 and std::filesystem +CLANG_CXX_LANGUAGE_STANDARD = c++23 +CLANG_C_LANGUAGE_STANDARD = c17 +MACOSX_DEPLOYMENT_TARGET = 11.5 + +// App Settings +PRODUCT_NAME = $(TARGET_NAME) +PRODUCT_NAME[config=Debug] = $(TARGET_NAME)Debug +PRODUCT_BUNDLE_IDENTIFIER = cc.openFrameworks.${TARGET_NAME:rfc1034identifier} +//PRODUCT_BUNDLE_IDENTIFIER[config=Debug] = cc.openFrameworks.$(TARGET_NAME)Debug +DEVELOPMENT_LANGUAGE = English +CODE_SIGN_IDENTITY = - +INFOPLIST_FILE = openFrameworks-Info.plist +GENERATE_INFOPLIST_FILE = YES + +// set application category to games, this is required to enable Game mode +// note: this sets the initial value in the Xcode UI +INFOPLIST_KEY_LSApplicationCategoryType = public.app-category.games + +// VERSIONING - overridden if changed in Xcode UI + +// this is "Version" in the Xcode target Identity UI +// suggested to use semantic versioning format ala #.#.# +MARKETING_VERSION = 0.1.0 + +// If users upgrade project to recommended settings it enables script sandboxing which breaks our post build script +ENABLE_USER_SCRIPT_SANDBOXING=NO + +// this is "Build" in the Xcode target Identity UI, an incremental build number +// important for the App Store as new build submissions need a diff number even +// if MARKETING_VERSION is the same +CURRENT_PROJECT_VERSION = 1 + +// ICONS + +// default oF app icon +ICON_NAME = of.icns +ICON_NAME[config=Debug] = of_debug.icns +ICON_FILE = $(OF_PATH)/libs/openFrameworksCompiled/project/osx/$(ICON_NAME) + +// custom app icon, placed in main project folder +//ICON_NAME = MyApp.icns +//ICON_FILE = $(ICON_NAME) + +// custom app icon with separate Release and Debug versions placed in bin/data +//ICON_NAME = icon.icns +//ICON_NAME[config=Debug] = icon-debug.icns +//ICON_FILE = bin/data/$(ICON_NAME) + +// note: oF 0.7.2 - 0.11 used ICON_FILE_PATH which is no longer used in oF 0.12+ +// ex. change ICON_FILE_PATH = bin/data/ -> ICON_FILE = bin/data/$(ICON_NAME) & +// in a custom openFrameworks-Info.plist, set CFBundleIconFile to ICON_NAME + +//APPSTORE, uncomment next lines to bundle data folder and code sign +//OF_CODESIGN = 1 +//OF_BUNDLE_DATA_FOLDER = 1 +//OF_BUNDLE_DYLIBS = 1 + +HIGH_RESOLUTION_CAPABLE = NO + +// Optional include to keep any permanent settings as CODE_SIGN_IDENTITY. +#include? "App.xcconfig" + +//FOR AV ENGINE SOUND PLAYER UNCOMMENT THREE LINES BELOW +OF_NO_FMOD=1 +USER_PREPROCESSOR_DEFINITIONS="OF_NO_FMOD=1" +LIB_FMOD="" +GCC_PREPROCESSOR_DEFINITIONS=$(inherited) $(USER_PREPROCESSOR_DEFINITIONS) + +OTHER_CFLAGS = $(OF_CORE_CFLAGS) +OTHER_LDFLAGS = $(OF_CORE_LIBS) $(OF_CORE_FRAMEWORKS) HEADER_SEARCH_PATHS = $(OF_CORE_HEADERS) + +//THIS MAKES SURE THE APP BUILDS INSIDE THE BIN FOLDER +//If you comment this line out the app will be run from DerrivedData and your data/ files won't be accessible unless you uncomment OF_BUNDLE_DATA_FOLDER = 1 above +CONFIGURATION_BUILD_DIR = ${SRCROOT}/bin + +//OF_CORE_BUILD_COMMAND = echo \"💾 Compiling openFrameworks\"\nxcodebuild -project \"$OF_PATH/libs/openFrameworksCompiled/project/osx/openFrameworksLib.xcodeproj\" -target openFrameworks -configuration \"${CONFIGURATION}\" CLANG_CXX_LANGUAGE_STANDARD=$CLANG_CXX_LANGUAGE_STANDARD MACOSX_DEPLOYMENT_TARGET=$MACOSX_DEPLOYMENT_TARGET GCC_PREPROCESSOR_DEFINITIONS='$USER_PREPROCESSOR_DEFINITIONS' + + +OF_CORE_BUILD_COMMAND = xcodebuild -project $OF_PATH/libs/openFrameworksCompiled/project/osx/openFrameworksLib.xcodeproj -target openFrameworks -configuration ${CONFIGURATION} CLANG_CXX_LANGUAGE_STANDARD=$CLANG_CXX_LANGUAGE_STANDARD MACOSX_DEPLOYMENT_TARGET=$MACOSX_DEPLOYMENT_TARGET GCC_PREPROCESSOR_DEFINITIONS=$USER_PREPROCESSOR_DEFINITIONS diff --git a/example-sync-sound/addons.make b/example-sync-sound/addons.make new file mode 100644 index 0000000..bec539d --- /dev/null +++ b/example-sync-sound/addons.make @@ -0,0 +1 @@ +../ofxBvh diff --git a/example-sync-sound/config.make b/example-sync-sound/config.make new file mode 100644 index 0000000..c3593ae --- /dev/null +++ b/example-sync-sound/config.make @@ -0,0 +1,3 @@ +# This suite is designed to live at apps/myApps/example-openFrameworks. +# Override from any location with: make OF_ROOT=/path/to/openFrameworks +OF_ROOT ?= ../../../.. diff --git a/example-sync-sound/example-sync-sound.xcodeproj/project.pbxproj b/example-sync-sound/example-sync-sound.xcodeproj/project.pbxproj index 6aa4461..7d6e51c 100644 --- a/example-sync-sound/example-sync-sound.xcodeproj/project.pbxproj +++ b/example-sync-sound/example-sync-sound.xcodeproj/project.pbxproj @@ -1,593 +1,358 @@ -// !$*UTF8*$! { - archiveVersion = 1; - classes = { - }; - objectVersion = 42; - objects = { - -/* Begin PBXBuildFile section */ - 60BF71DE15271F3F00604CB3 /* ofxBvh.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 60BF71DC15271F3F00604CB3 /* ofxBvh.cpp */; }; - BBAB23CB13894F3D00AA2426 /* GLUT.framework in CopyFiles */ = {isa = PBXBuildFile; fileRef = BBAB23BE13894E4700AA2426 /* GLUT.framework */; }; - E4328149138ABC9F0047C5CB /* openFrameworksDebug.a in Frameworks */ = {isa = PBXBuildFile; fileRef = E4328148138ABC890047C5CB /* openFrameworksDebug.a */; }; - E45BE97B0E8CC7DD009D7055 /* AGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E45BE9710E8CC7DD009D7055 /* AGL.framework */; }; - E45BE97C0E8CC7DD009D7055 /* ApplicationServices.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E45BE9720E8CC7DD009D7055 /* ApplicationServices.framework */; }; - E45BE97D0E8CC7DD009D7055 /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E45BE9730E8CC7DD009D7055 /* AudioToolbox.framework */; }; - E45BE97E0E8CC7DD009D7055 /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E45BE9740E8CC7DD009D7055 /* Carbon.framework */; }; - E45BE97F0E8CC7DD009D7055 /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E45BE9750E8CC7DD009D7055 /* CoreAudio.framework */; }; - E45BE9800E8CC7DD009D7055 /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E45BE9760E8CC7DD009D7055 /* CoreFoundation.framework */; }; - E45BE9810E8CC7DD009D7055 /* CoreServices.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E45BE9770E8CC7DD009D7055 /* CoreServices.framework */; }; - E45BE9830E8CC7DD009D7055 /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E45BE9790E8CC7DD009D7055 /* OpenGL.framework */; }; - E45BE9840E8CC7DD009D7055 /* QuickTime.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E45BE97A0E8CC7DD009D7055 /* QuickTime.framework */; }; - E4B69E200A3A1BDC003C02F2 /* main.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E4B69E1D0A3A1BDC003C02F2 /* main.cpp */; }; - E4B69E210A3A1BDC003C02F2 /* testApp.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E4B69E1E0A3A1BDC003C02F2 /* testApp.cpp */; }; - E4C2424710CC5A17004149E2 /* AppKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E4C2424410CC5A17004149E2 /* AppKit.framework */; }; - E4C2424810CC5A17004149E2 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E4C2424510CC5A17004149E2 /* Cocoa.framework */; }; - E4C2424910CC5A17004149E2 /* IOKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E4C2424610CC5A17004149E2 /* IOKit.framework */; }; - E4EB6799138ADC1D00A09F29 /* GLUT.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BBAB23BE13894E4700AA2426 /* GLUT.framework */; }; -/* End PBXBuildFile section */ - -/* Begin PBXContainerItemProxy section */ - E4328147138ABC890047C5CB /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = E4328143138ABC890047C5CB /* openFrameworksLib.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = E4B27C1510CBEB8E00536013; - remoteInfo = openFrameworks; - }; - E4EEB9AB138B136A00A80321 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = E4328143138ABC890047C5CB /* openFrameworksLib.xcodeproj */; - proxyType = 1; - remoteGlobalIDString = E4B27C1410CBEB8E00536013; - remoteInfo = openFrameworks; - }; -/* End PBXContainerItemProxy section */ - -/* Begin PBXCopyFilesBuildPhase section */ - E4C2427710CC5ABF004149E2 /* CopyFiles */ = { - isa = PBXCopyFilesBuildPhase; - buildActionMask = 2147483647; - dstPath = ""; - dstSubfolderSpec = 10; - files = ( - BBAB23CB13894F3D00AA2426 /* GLUT.framework in CopyFiles */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXCopyFilesBuildPhase section */ - -/* Begin PBXFileReference section */ - 60BF71D915271F3F00604CB3 /* .gitignore */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = .gitignore; sourceTree = ""; }; - 60BF71DA15271F3F00604CB3 /* LICENSE */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = LICENSE; sourceTree = ""; }; - 60BF71DC15271F3F00604CB3 /* ofxBvh.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ofxBvh.cpp; sourceTree = ""; }; - 60BF71DD15271F3F00604CB3 /* ofxBvh.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ofxBvh.h; sourceTree = ""; }; - BBAB23BE13894E4700AA2426 /* GLUT.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = GLUT.framework; path = ../../../libs/glut/lib/osx/GLUT.framework; sourceTree = ""; }; - E4328143138ABC890047C5CB /* openFrameworksLib.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = openFrameworksLib.xcodeproj; path = ../../../libs/openFrameworksCompiled/project/osx/openFrameworksLib.xcodeproj; sourceTree = SOURCE_ROOT; }; - E45BE9710E8CC7DD009D7055 /* AGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AGL.framework; path = /System/Library/Frameworks/AGL.framework; sourceTree = ""; }; - E45BE9720E8CC7DD009D7055 /* ApplicationServices.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = ApplicationServices.framework; path = /System/Library/Frameworks/ApplicationServices.framework; sourceTree = ""; }; - E45BE9730E8CC7DD009D7055 /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioToolbox.framework; path = /System/Library/Frameworks/AudioToolbox.framework; sourceTree = ""; }; - E45BE9740E8CC7DD009D7055 /* Carbon.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Carbon.framework; path = /System/Library/Frameworks/Carbon.framework; sourceTree = ""; }; - E45BE9750E8CC7DD009D7055 /* CoreAudio.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreAudio.framework; path = /System/Library/Frameworks/CoreAudio.framework; sourceTree = ""; }; - E45BE9760E8CC7DD009D7055 /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreFoundation.framework; path = /System/Library/Frameworks/CoreFoundation.framework; sourceTree = ""; }; - E45BE9770E8CC7DD009D7055 /* CoreServices.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreServices.framework; path = /System/Library/Frameworks/CoreServices.framework; sourceTree = ""; }; - E45BE9790E8CC7DD009D7055 /* OpenGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGL.framework; path = /System/Library/Frameworks/OpenGL.framework; sourceTree = ""; }; - E45BE97A0E8CC7DD009D7055 /* QuickTime.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuickTime.framework; path = /System/Library/Frameworks/QuickTime.framework; sourceTree = ""; }; - E4B69B5B0A3A1756003C02F2 /* example-sync-soundDebug.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "example-sync-soundDebug.app"; sourceTree = BUILT_PRODUCTS_DIR; }; - E4B69E1D0A3A1BDC003C02F2 /* main.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = main.cpp; path = src/main.cpp; sourceTree = SOURCE_ROOT; }; - E4B69E1E0A3A1BDC003C02F2 /* testApp.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.cpp; fileEncoding = 4; name = testApp.cpp; path = src/testApp.cpp; sourceTree = SOURCE_ROOT; }; - E4B69E1F0A3A1BDC003C02F2 /* testApp.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = testApp.h; path = src/testApp.h; sourceTree = SOURCE_ROOT; }; - E4B6FCAD0C3E899E008CF71C /* openFrameworks-Info.plist */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text.plist.xml; path = "openFrameworks-Info.plist"; sourceTree = ""; }; - E4C2424410CC5A17004149E2 /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = /System/Library/Frameworks/AppKit.framework; sourceTree = ""; }; - E4C2424510CC5A17004149E2 /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = /System/Library/Frameworks/Cocoa.framework; sourceTree = ""; }; - E4C2424610CC5A17004149E2 /* IOKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = IOKit.framework; path = /System/Library/Frameworks/IOKit.framework; sourceTree = ""; }; - E4EB691F138AFCF100A09F29 /* CoreOF.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = CoreOF.xcconfig; path = ../../../libs/openFrameworksCompiled/project/osx/CoreOF.xcconfig; sourceTree = SOURCE_ROOT; }; - E4EB6923138AFD0F00A09F29 /* Project.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = Project.xcconfig; sourceTree = ""; }; -/* End PBXFileReference section */ - -/* Begin PBXFrameworksBuildPhase section */ - E4B69B590A3A1756003C02F2 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - E4EB6799138ADC1D00A09F29 /* GLUT.framework in Frameworks */, - E4328149138ABC9F0047C5CB /* openFrameworksDebug.a in Frameworks */, - E45BE97B0E8CC7DD009D7055 /* AGL.framework in Frameworks */, - E45BE97C0E8CC7DD009D7055 /* ApplicationServices.framework in Frameworks */, - E45BE97D0E8CC7DD009D7055 /* AudioToolbox.framework in Frameworks */, - E45BE97E0E8CC7DD009D7055 /* Carbon.framework in Frameworks */, - E45BE97F0E8CC7DD009D7055 /* CoreAudio.framework in Frameworks */, - E45BE9800E8CC7DD009D7055 /* CoreFoundation.framework in Frameworks */, - E45BE9810E8CC7DD009D7055 /* CoreServices.framework in Frameworks */, - E45BE9830E8CC7DD009D7055 /* OpenGL.framework in Frameworks */, - E45BE9840E8CC7DD009D7055 /* QuickTime.framework in Frameworks */, - E4C2424710CC5A17004149E2 /* AppKit.framework in Frameworks */, - E4C2424810CC5A17004149E2 /* Cocoa.framework in Frameworks */, - E4C2424910CC5A17004149E2 /* IOKit.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXFrameworksBuildPhase section */ - -/* Begin PBXGroup section */ - 60BF71D815271F3F00604CB3 /* ofxBvh */ = { - isa = PBXGroup; - children = ( - 60BF71D915271F3F00604CB3 /* .gitignore */, - 60BF71DA15271F3F00604CB3 /* LICENSE */, - 60BF71DB15271F3F00604CB3 /* src */, - ); - name = ofxBvh; - path = ../../../addons/ofxBvh; - sourceTree = ""; - }; - 60BF71DB15271F3F00604CB3 /* src */ = { - isa = PBXGroup; - children = ( - 60BF71DC15271F3F00604CB3 /* ofxBvh.cpp */, - 60BF71DD15271F3F00604CB3 /* ofxBvh.h */, - ); - path = src; - sourceTree = ""; - }; - BB4B014C10F69532006C3DED /* addons */ = { - isa = PBXGroup; - children = ( - 60BF71D815271F3F00604CB3 /* ofxBvh */, - ); - name = addons; - sourceTree = ""; - }; - BBAB23C913894ECA00AA2426 /* system frameworks */ = { - isa = PBXGroup; - children = ( - E4C2424410CC5A17004149E2 /* AppKit.framework */, - E4C2424510CC5A17004149E2 /* Cocoa.framework */, - E4C2424610CC5A17004149E2 /* IOKit.framework */, - E45BE9710E8CC7DD009D7055 /* AGL.framework */, - E45BE9720E8CC7DD009D7055 /* ApplicationServices.framework */, - E45BE9730E8CC7DD009D7055 /* AudioToolbox.framework */, - E45BE9740E8CC7DD009D7055 /* Carbon.framework */, - E45BE9750E8CC7DD009D7055 /* CoreAudio.framework */, - E45BE9760E8CC7DD009D7055 /* CoreFoundation.framework */, - E45BE9770E8CC7DD009D7055 /* CoreServices.framework */, - E45BE9790E8CC7DD009D7055 /* OpenGL.framework */, - E45BE97A0E8CC7DD009D7055 /* QuickTime.framework */, - ); - name = "system frameworks"; - sourceTree = ""; - }; - BBAB23CA13894EDB00AA2426 /* 3rd party frameworks */ = { - isa = PBXGroup; - children = ( - BBAB23BE13894E4700AA2426 /* GLUT.framework */, - ); - name = "3rd party frameworks"; - sourceTree = ""; - }; - E4328144138ABC890047C5CB /* Products */ = { - isa = PBXGroup; - children = ( - E4328148138ABC890047C5CB /* openFrameworksDebug.a */, - ); - name = Products; - sourceTree = ""; - }; - E45BE5980E8CC70C009D7055 /* frameworks */ = { - isa = PBXGroup; - children = ( - BBAB23CA13894EDB00AA2426 /* 3rd party frameworks */, - BBAB23C913894ECA00AA2426 /* system frameworks */, - ); - name = frameworks; - sourceTree = ""; - }; - E4B69B4A0A3A1720003C02F2 = { - isa = PBXGroup; - children = ( - E4B69E1C0A3A1BDC003C02F2 /* src */, - E4EEC9E9138DF44700A80321 /* openFrameworks */, - BB4B014C10F69532006C3DED /* addons */, - E45BE5980E8CC70C009D7055 /* frameworks */, - E4B69B5B0A3A1756003C02F2 /* example-sync-soundDebug.app */, - ); - sourceTree = ""; - }; - E4B69E1C0A3A1BDC003C02F2 /* src */ = { - isa = PBXGroup; - children = ( - E4B69E1D0A3A1BDC003C02F2 /* main.cpp */, - E4B69E1F0A3A1BDC003C02F2 /* testApp.h */, - E4B69E1E0A3A1BDC003C02F2 /* testApp.cpp */, - ); - path = src; - sourceTree = SOURCE_ROOT; - }; - E4EEC9E9138DF44700A80321 /* openFrameworks */ = { - isa = PBXGroup; - children = ( - E4EB6923138AFD0F00A09F29 /* Project.xcconfig */, - E4EB691F138AFCF100A09F29 /* CoreOF.xcconfig */, - E4328143138ABC890047C5CB /* openFrameworksLib.xcodeproj */, - E4B6FCAD0C3E899E008CF71C /* openFrameworks-Info.plist */, - ); - name = openFrameworks; - sourceTree = ""; - }; -/* End PBXGroup section */ - -/* Begin PBXNativeTarget section */ - E4B69B5A0A3A1756003C02F2 /* example-sync-sound */ = { - isa = PBXNativeTarget; - buildConfigurationList = E4B69B5F0A3A1757003C02F2 /* Build configuration list for PBXNativeTarget "example-sync-sound" */; - buildPhases = ( - E4B69B580A3A1756003C02F2 /* Sources */, - E4B69B590A3A1756003C02F2 /* Frameworks */, - E4B6FFFD0C3F9AB9008CF71C /* ShellScript */, - E4C2427710CC5ABF004149E2 /* CopyFiles */, - ); - buildRules = ( - ); - dependencies = ( - E4EEB9AC138B136A00A80321 /* PBXTargetDependency */, - ); - name = "example-sync-sound"; - productName = myOFApp; - productReference = E4B69B5B0A3A1756003C02F2 /* example-sync-soundDebug.app */; - productType = "com.apple.product-type.application"; - }; -/* End PBXNativeTarget section */ - -/* Begin PBXProject section */ - E4B69B4C0A3A1720003C02F2 /* Project object */ = { - isa = PBXProject; - buildConfigurationList = E4B69B4D0A3A1720003C02F2 /* Build configuration list for PBXProject "example-sync-sound" */; - compatibilityVersion = "Xcode 2.4"; - developmentRegion = English; - hasScannedForEncodings = 0; - knownRegions = ( - English, - Japanese, - French, - German, - ); - mainGroup = E4B69B4A0A3A1720003C02F2; - productRefGroup = E4B69B4A0A3A1720003C02F2; - projectDirPath = ""; - projectReferences = ( - { - ProductGroup = E4328144138ABC890047C5CB /* Products */; - ProjectRef = E4328143138ABC890047C5CB /* openFrameworksLib.xcodeproj */; - }, - ); - projectRoot = ""; - targets = ( - E4B69B5A0A3A1756003C02F2 /* example-sync-sound */, - ); - }; -/* End PBXProject section */ - -/* Begin PBXReferenceProxy section */ - E4328148138ABC890047C5CB /* openFrameworksDebug.a */ = { - isa = PBXReferenceProxy; - fileType = archive.ar; - path = openFrameworksDebug.a; - remoteRef = E4328147138ABC890047C5CB /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; -/* End PBXReferenceProxy section */ - -/* Begin PBXShellScriptBuildPhase section */ - E4B6FFFD0C3F9AB9008CF71C /* ShellScript */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - ); - outputPaths = ( - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "cp -f ../../../libs/fmodex/lib/osx/libfmodex.dylib \"$TARGET_BUILD_DIR/$PRODUCT_NAME.app/Contents/MacOS/libfmodex.dylib\"; install_name_tool -change ./libfmodex.dylib @executable_path/libfmodex.dylib \"$TARGET_BUILD_DIR/$PRODUCT_NAME.app/Contents/MacOS/$PRODUCT_NAME\";"; - }; -/* End PBXShellScriptBuildPhase section */ - -/* Begin PBXSourcesBuildPhase section */ - E4B69B580A3A1756003C02F2 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - E4B69E200A3A1BDC003C02F2 /* main.cpp in Sources */, - E4B69E210A3A1BDC003C02F2 /* testApp.cpp in Sources */, - 60BF71DE15271F3F00604CB3 /* ofxBvh.cpp in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXSourcesBuildPhase section */ - -/* Begin PBXTargetDependency section */ - E4EEB9AC138B136A00A80321 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = openFrameworks; - targetProxy = E4EEB9AB138B136A00A80321 /* PBXContainerItemProxy */; - }; -/* End PBXTargetDependency section */ - -/* Begin XCBuildConfiguration section */ - E4B69B4E0A3A1720003C02F2 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = E4EB6923138AFD0F00A09F29 /* Project.xcconfig */; - buildSettings = { - ARCHS = "$(NATIVE_ARCH)"; - CONFIGURATION_BUILD_DIR = "$(SRCROOT)/bin/"; - COPY_PHASE_STRIP = NO; - DEAD_CODE_STRIPPING = YES; - GCC_AUTO_VECTORIZATION = YES; - GCC_ENABLE_SSE3_EXTENSIONS = YES; - GCC_ENABLE_SUPPLEMENTAL_SSE3_INSTRUCTIONS = YES; - GCC_INLINES_ARE_PRIVATE_EXTERN = NO; - GCC_MODEL_TUNING = G5; - GCC_SYMBOLS_PRIVATE_EXTERN = NO; - GCC_WARN_ABOUT_DEPRECATED_FUNCTIONS = NO; - GCC_WARN_ABOUT_INVALID_OFFSETOF_MACRO = NO; - GCC_WARN_ALLOW_INCOMPLETE_PROTOCOL = NO; - GCC_WARN_UNINITIALIZED_AUTOS = NO; - GCC_WARN_UNUSED_VALUE = NO; - GCC_WARN_UNUSED_VARIABLE = NO; - OTHER_CPLUSPLUSFLAGS = ( - "-D__MACOSX_CORE__", - "-lpthread", - ); - }; - name = Debug; - }; - E4B69B4F0A3A1720003C02F2 /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = E4EB6923138AFD0F00A09F29 /* Project.xcconfig */; - buildSettings = { - ARCHS = "$(NATIVE_ARCH)"; - CONFIGURATION_BUILD_DIR = "$(SRCROOT)/bin/"; - COPY_PHASE_STRIP = YES; - DEAD_CODE_STRIPPING = YES; - GCC_AUTO_VECTORIZATION = YES; - GCC_ENABLE_SSE3_EXTENSIONS = YES; - GCC_ENABLE_SUPPLEMENTAL_SSE3_INSTRUCTIONS = YES; - GCC_INLINES_ARE_PRIVATE_EXTERN = NO; - GCC_MODEL_TUNING = G5; - GCC_OPTIMIZATION_LEVEL = 3; - GCC_SYMBOLS_PRIVATE_EXTERN = NO; - GCC_UNROLL_LOOPS = YES; - GCC_WARN_ABOUT_DEPRECATED_FUNCTIONS = NO; - GCC_WARN_ABOUT_INVALID_OFFSETOF_MACRO = NO; - GCC_WARN_ALLOW_INCOMPLETE_PROTOCOL = NO; - GCC_WARN_UNINITIALIZED_AUTOS = NO; - GCC_WARN_UNUSED_VALUE = NO; - GCC_WARN_UNUSED_VARIABLE = NO; - OTHER_CPLUSPLUSFLAGS = ( - "-D__MACOSX_CORE__", - "-lpthread", - ); - }; - name = Release; - }; - E4B69B600A3A1757003C02F2 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - COPY_PHASE_STRIP = NO; - FRAMEWORK_SEARCH_PATHS = ( - "$(inherited)", - "$(FRAMEWORK_SEARCH_PATHS_QUOTED_FOR_TARGET_1)", - ); - FRAMEWORK_SEARCH_PATHS_QUOTED_FOR_TARGET_1 = "\"$(SRCROOT)/../../../libs/glut/lib/osx\""; - GCC_DYNAMIC_NO_PIC = NO; - GCC_ENABLE_FIX_AND_CONTINUE = YES; - GCC_GENERATE_DEBUGGING_SYMBOLS = YES; - GCC_MODEL_TUNING = G4; - GCC_PRECOMPILE_PREFIX_HEADER = YES; - GCC_PREFIX_HEADER = "$(SYSTEM_LIBRARY_DIR)/Frameworks/Carbon.framework/Headers/Carbon.h"; - INFOPLIST_FILE = "openFrameworks-Info.plist"; - INSTALL_PATH = "$(HOME)/Applications"; - LIBRARY_SEARCH_PATHS = ( - "$(inherited)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_1)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_2)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_3)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_4)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_5)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_6)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_7)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_8)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_9)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_10)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_11)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_12)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_13)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_14)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_15)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_2)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_3)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_7)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_8)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_9)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_10)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_11)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_12)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_13)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_16)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_17)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_18)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_19)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_20)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_21)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_22)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_23)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_24)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_25)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_26)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_27)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_28)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_29)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_30)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_31)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_32)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_33)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_34)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_35)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_36)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_37)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_38)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_39)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_40)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_41)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_42)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_43)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_44)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_45)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_46)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_47)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_48)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_49)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_50)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_51)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_52)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_1)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_2)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_3)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_4)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_5)", - ); - LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_1 = "\"$(SRCROOT)/../../../addons/ofxTimeline/libs/kiss/lib/linux\""; - LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_2 = "\"$(SRCROOT)/../../../addons/ofxTimeline/libs/kiss/lib/linux64\""; - LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_3 = "\"$(SRCROOT)/../../../addons/ofxTimeline/libs/sndfile/linux/lib\""; - LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_4 = "\"$(SRCROOT)/../../../addons/ofxTimeline/libs/sndfile/osx/lib\""; - LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_5 = "\"$(SRCROOT)/../../../addons/ofxTimeline/libs/sndfile/win32/lib\""; - PREBINDING = NO; - PRODUCT_NAME = "example-sync-soundDebug"; - SDKROOT = "$(DEVELOPER_SDK_DIR)/MacOSX10.6.sdk"; - WRAPPER_EXTENSION = app; - }; - name = Debug; - }; - E4B69B610A3A1757003C02F2 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - COPY_PHASE_STRIP = YES; - FRAMEWORK_SEARCH_PATHS = ( - "$(inherited)", - "$(FRAMEWORK_SEARCH_PATHS_QUOTED_FOR_TARGET_1)", - ); - FRAMEWORK_SEARCH_PATHS_QUOTED_FOR_TARGET_1 = "\"$(SRCROOT)/../../../libs/glut/lib/osx\""; - GCC_ENABLE_FIX_AND_CONTINUE = NO; - GCC_GENERATE_DEBUGGING_SYMBOLS = NO; - GCC_MODEL_TUNING = G4; - GCC_PRECOMPILE_PREFIX_HEADER = YES; - GCC_PREFIX_HEADER = "$(SYSTEM_LIBRARY_DIR)/Frameworks/Carbon.framework/Headers/Carbon.h"; - INFOPLIST_FILE = "openFrameworks-Info.plist"; - INSTALL_PATH = "$(HOME)/Applications"; - LIBRARY_SEARCH_PATHS = ( - "$(inherited)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_1)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_2)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_3)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_4)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_5)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_6)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_7)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_8)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_9)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_10)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_11)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_12)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_13)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_14)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_15)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_2)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_1)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_3)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_7)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_8)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_9)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_10)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_11)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_12)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_13)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_16)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_17)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_18)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_19)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_20)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_21)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_22)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_23)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_24)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_25)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_26)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_27)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_28)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_29)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_30)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_31)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_32)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_33)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_34)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_35)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_36)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_37)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_38)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_39)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_40)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_41)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_42)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_43)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_44)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_45)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_46)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_47)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_48)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_49)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_50)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_51)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_1)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_2)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_3)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_4)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_5)", - ); - LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_1 = "\"$(SRCROOT)/../../../addons/ofxTimeline/libs/kiss/lib/linux\""; - LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_2 = "\"$(SRCROOT)/../../../addons/ofxTimeline/libs/kiss/lib/linux64\""; - LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_3 = "\"$(SRCROOT)/../../../addons/ofxTimeline/libs/sndfile/linux/lib\""; - LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_4 = "\"$(SRCROOT)/../../../addons/ofxTimeline/libs/sndfile/osx/lib\""; - LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_5 = "\"$(SRCROOT)/../../../addons/ofxTimeline/libs/sndfile/win32/lib\""; - PREBINDING = NO; - PRODUCT_NAME = "example-sync-sound"; - SDKROOT = "$(DEVELOPER_SDK_DIR)/MacOSX10.6.sdk"; - WRAPPER_EXTENSION = app; - }; - name = Release; - }; -/* End XCBuildConfiguration section */ - -/* Begin XCConfigurationList section */ - E4B69B4D0A3A1720003C02F2 /* Build configuration list for PBXProject "example-sync-sound" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - E4B69B4E0A3A1720003C02F2 /* Debug */, - E4B69B4F0A3A1720003C02F2 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - E4B69B5F0A3A1757003C02F2 /* Build configuration list for PBXNativeTarget "example-sync-sound" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - E4B69B600A3A1757003C02F2 /* Debug */, - E4B69B610A3A1757003C02F2 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; -/* End XCConfigurationList section */ - }; - rootObject = E4B69B4C0A3A1720003C02F2 /* Project object */; + "_OFProjectGeneratorVersion": "0.103.0", + "archiveVersion": "1", + "classes": {}, + "objectVersion": "54", + "objects": { + "038B50BA-9CFF-4152-BE0B-75F2A6179ED6": { + "fileEncoding": "4", + "isa": "PBXFileReference", + "lastKnownFileType": "sourcecode.cpp.h", + "name": "ofxBvh.h", + "path": "../ofxBvh/src/ofxBvh.h", + "sourceTree": "SOURCE_ROOT" + }, + "191CD6FA2847E21E0085CBB6": { + "fileEncoding": "4", + "isa": "PBXFileReference", + "lastKnownFileType": "text.plist.entitlements", + "path": "of.entitlements", + "sourceTree": "" + }, + "191EF70929D778A400F35F26": { + "isa": "PBXFileReference", + "lastKnownFileType": "folder", + "name": "openFrameworks", + "path": "../../../../libs/openFrameworks", + "sourceTree": "SOURCE_ROOT" + }, + "19B789C429E5AB4A0082E9B8": { + "alwaysOutOfDate": "1", + "buildActionMask": "2147483647", + "files": [], + "inputFileListPaths": [], + "inputPaths": [], + "isa": "PBXShellScriptBuildPhase", + "outputFileListPaths": [], + "outputPaths": [], + "runOnlyForDeploymentPostprocessing": "0", + "shellPath": "/bin/sh", + "shellScript": "\"$OF_PATH/scripts/osx/xcode_project.sh\"\n", + "showEnvVarsInLog": "0" + }, + "1D94119C-13AC-418A-A4FC-2426F2076332": { + "fileEncoding": "4", + "isa": "PBXFileReference", + "lastKnownFileType": "sourcecode.cpp.cpp", + "name": "ofxBvh.cpp", + "path": "../ofxBvh/src/ofxBvh.cpp", + "sourceTree": "SOURCE_ROOT" + }, + "5246FD20-7DBB-4354-B351-9BDD9008B796": { + "fileRef": "BC90291E-EC8E-4FF0-97AA-8E15F7F40BF7", + "isa": "PBXBuildFile" + }, + "66646A62-9753-4A14-B098-F90FA65CEC21": { + "children": [ + "C46DECE4-C688-4892-B7C0-BBA05139EB84" + ], + "isa": "PBXGroup", + "name": "ofxBvh", + "path": "../ofxBvh", + "sourceTree": "SOURCE_ROOT" + }, + "7B92996C-F4FD-4684-8064-927448EF78F0": { + "children": [ + "66646A62-9753-4A14-B098-F90FA65CEC21" + ], + "isa": "PBXGroup", + "name": "local_addons", + "path": "", + "sourceTree": "SOURCE_ROOT" + }, + "8A67F52B-1EF7-424D-85A0-541D596387F5": { + "fileEncoding": "4", + "isa": "PBXFileReference", + "lastKnownFileType": "sourcecode.cpp.h", + "name": "testApp.h", + "sourceTree": "" + }, + "BB4B014C10F69532006C3DED": { + "children": [], + "isa": "PBXGroup", + "name": "addons", + "path": "../../../../addons", + "sourceTree": "SOURCE_ROOT" + }, + "BC90291E-EC8E-4FF0-97AA-8E15F7F40BF7": { + "fileEncoding": "4", + "isa": "PBXFileReference", + "lastKnownFileType": "sourcecode.cpp.cpp", + "name": "testApp.cpp", + "sourceTree": "" + }, + "C46DECE4-C688-4892-B7C0-BBA05139EB84": { + "children": [ + "1D94119C-13AC-418A-A4FC-2426F2076332", + "038B50BA-9CFF-4152-BE0B-75F2A6179ED6" + ], + "isa": "PBXGroup", + "name": "src", + "path": "src", + "sourceTree": "" + }, + "C6610A9A-2A87-49EE-B30E-EEAE77CBA6C3": { + "fileRef": "1D94119C-13AC-418A-A4FC-2426F2076332", + "isa": "PBXBuildFile" + }, + "D180157D-49DC-408A-ADFA-84A35FF5759A": { + "fileEncoding": "4", + "isa": "PBXFileReference", + "lastKnownFileType": "folder", + "name": "data", + "path": "bin/data", + "sourceTree": "SOURCE_ROOT" + }, + "E42962A92163ECCD00A6A9E2": { + "alwaysOutOfDate": "1", + "buildActionMask": "2147483647", + "files": [], + "inputPaths": [], + "isa": "PBXShellScriptBuildPhase", + "name": "Run Script — Compile OF", + "outputPaths": [], + "runOnlyForDeploymentPostprocessing": "0", + "shellPath": "/bin/sh", + "shellScript": "$OF_CORE_BUILD_COMMAND\n", + "showEnvVarsInLog": "0" + }, + "E4A5B60F29BAAAE400C2D356": { + "buildActionMask": "2147483647", + "dstPath": "", + "dstSubfolderSpec": "6", + "files": [], + "isa": "PBXCopyFilesBuildPhase", + "runOnlyForDeploymentPostprocessing": "0" + }, + "E4B69B4A0A3A1720003C02F2": { + "children": [ + "191CD6FA2847E21E0085CBB6", + "E4B6FCAD0C3E899E008CF71C", + "E4EB6923138AFD0F00A09F29", + "E4B69E1C0A3A1BDC003C02F2", + "191EF70929D778A400F35F26", + "BB4B014C10F69532006C3DED", + "E4B69B5B0A3A1756003C02F2", + "7B92996C-F4FD-4684-8064-927448EF78F0", + "D180157D-49DC-408A-ADFA-84A35FF5759A" + ], + "isa": "PBXGroup", + "sourceTree": "" + }, + "E4B69B4C0A3A1720003C02F2": { + "attributes": { + "BuildIndependentTargetsInParallel": "YES", + "LastUpgradeCheck": "1540" + }, + "buildConfigurationList": "E4B69B4D0A3A1720003C02F2", + "compatibilityVersion": "Xcode 3.2", + "developmentRegion": "en", + "hasScannedForEncodings": "0", + "isa": "PBXProject", + "knownRegions": [ + "en", + "Base" + ], + "mainGroup": "E4B69B4A0A3A1720003C02F2", + "productRefGroup": "E4B69B4A0A3A1720003C02F2", + "projectDirPath": "", + "projectRoot": "", + "targets": [ + "E4B69B5A0A3A1756003C02F2" + ] + }, + "E4B69B4D0A3A1720003C02F2": { + "buildConfigurations": [ + "E4B69B4E0A3A1720003C02F2", + "E4B69B4F0A3A1720003C02F2" + ], + "defaultConfigurationIsVisible": "0", + "defaultConfigurationName": "Release", + "isa": "XCConfigurationList" + }, + "E4B69B4E0A3A1720003C02F2": { + "baseConfigurationReference": "E4EB6923138AFD0F00A09F29", + "buildSettings": { + "CODE_SIGN_ENTITLEMENTS": "of.entitlements", + "COPY_PHASE_STRIP": "NO", + "ENABLE_TESTABILITY": "YES", + "GCC_OPTIMIZATION_LEVEL": "0", + "GCC_WARN_UNUSED_VARIABLE": "NO", + "HEADER_SEARCH_PATHS": [ + "$(OF_CORE_HEADERS)", + "src" + ], + "OTHER_CPLUSPLUSFLAGS": "-D__MACOSX_CORE__" + }, + "isa": "XCBuildConfiguration", + "name": "Debug" + }, + "E4B69B4F0A3A1720003C02F2": { + "baseConfigurationReference": "E4EB6923138AFD0F00A09F29", + "buildSettings": { + "CODE_SIGN_ENTITLEMENTS": "of.entitlements", + "COPY_PHASE_STRIP": "YES", + "GCC_OPTIMIZATION_LEVEL": "3", + "GCC_UNROLL_LOOPS": "YES", + "HEADER_SEARCH_PATHS": [ + "$(OF_CORE_HEADERS)", + "src" + ], + "OTHER_CPLUSPLUSFLAGS": "-D__MACOSX_CORE__" + }, + "isa": "XCBuildConfiguration", + "name": "Release" + }, + "E4B69B580A3A1756003C02F2": { + "buildActionMask": "2147483647", + "files": [ + "E4B69E200A3A1BDC003C02F2", + "5246FD20-7DBB-4354-B351-9BDD9008B796", + "C6610A9A-2A87-49EE-B30E-EEAE77CBA6C3" + ], + "isa": "PBXSourcesBuildPhase", + "runOnlyForDeploymentPostprocessing": "0" + }, + "E4B69B590A3A1756003C02F2": { + "buildActionMask": "2147483647", + "files": [], + "isa": "PBXFrameworksBuildPhase", + "runOnlyForDeploymentPostprocessing": "0" + }, + "E4B69B5A0A3A1756003C02F2": { + "buildConfigurationList": "E4B69B5F0A3A1757003C02F2", + "buildPhases": [ + "E42962A92163ECCD00A6A9E2", + "E4B69B580A3A1756003C02F2", + "E4B69B590A3A1756003C02F2", + "E4C2427710CC5ABF004149E2", + "E4A5B60F29BAAAE400C2D356", + "19B789C429E5AB4A0082E9B8" + ], + "buildRules": [], + "dependencies": [], + "isa": "PBXNativeTarget", + "name": "example-sync-sound", + "productName": "myOFApp", + "productReference": "E4B69B5B0A3A1756003C02F2", + "productType": "com.apple.product-type.application" + }, + "E4B69B5B0A3A1756003C02F2": { + "explicitFileType": "wrapper.application", + "includeInIndex": "0", + "isa": "PBXFileReference", + "path": "example-sync-soundDebug.app", + "sourceTree": "BUILT_PRODUCTS_DIR" + }, + "E4B69B5F0A3A1757003C02F2": { + "buildConfigurations": [ + "E4B69B600A3A1757003C02F2", + "E4B69B610A3A1757003C02F2" + ], + "defaultConfigurationIsVisible": "0", + "defaultConfigurationName": "Release", + "isa": "XCConfigurationList" + }, + "E4B69B600A3A1757003C02F2": { + "baseConfigurationReference": "E4EB6923138AFD0F00A09F29", + "buildSettings": { + "ARCHS": "$(ARCHS_STANDARD)", + "COPY_PHASE_STRIP": "NO", + "FRAMEWORK_SEARCH_PATHS": "$(inherited)", + "GCC_DYNAMIC_NO_PIC": "NO", + "HEADER_SEARCH_PATHS": [ + "$(OF_CORE_HEADERS)", + "src", + "src", + "../ofxBvh/src" + ], + "LIBRARY_SEARCH_PATHS": "$(inherited)", + "OTHER_LDFLAGS": [ + "$(OF_CORE_LIBS)", + "$(OF_CORE_FRAMEWORKS)", + "$(LIB_OF_DEBUG)" + ] + }, + "isa": "XCBuildConfiguration", + "name": "Debug" + }, + "E4B69B610A3A1757003C02F2": { + "baseConfigurationReference": "E4EB6923138AFD0F00A09F29", + "buildSettings": { + "ARCHS": "$(ARCHS_STANDARD)", + "COPY_PHASE_STRIP": "YES", + "FRAMEWORK_SEARCH_PATHS": "$(inherited)", + "HEADER_SEARCH_PATHS": [ + "$(OF_CORE_HEADERS)", + "src", + "src", + "../ofxBvh/src" + ], + "LIBRARY_SEARCH_PATHS": "$(inherited)", + "OTHER_LDFLAGS": [ + "$(OF_CORE_LIBS)", + "$(OF_CORE_FRAMEWORKS)", + "$(LIB_OF_RELEASE)" + ], + "baseConfigurationReference": "E4EB6923138AFD0F00A09F29" + }, + "isa": "XCBuildConfiguration", + "name": "Release" + }, + "E4B69E1C0A3A1BDC003C02F2": { + "children": [ + "E4B69E1D0A3A1BDC003C02F2", + "BC90291E-EC8E-4FF0-97AA-8E15F7F40BF7", + "8A67F52B-1EF7-424D-85A0-541D596387F5" + ], + "isa": "PBXGroup", + "path": "src", + "sourceTree": "SOURCE_ROOT" + }, + "E4B69E1D0A3A1BDC003C02F2": { + "fileEncoding": "4", + "isa": "PBXFileReference", + "lastKnownFileType": "sourcecode.cpp.cpp", + "name": "main.cpp", + "path": "src/main.cpp", + "sourceTree": "SOURCE_ROOT" + }, + "E4B69E200A3A1BDC003C02F2": { + "fileRef": "E4B69E1D0A3A1BDC003C02F2", + "isa": "PBXBuildFile" + }, + "E4B6FCAD0C3E899E008CF71C": { + "fileEncoding": "4", + "isa": "PBXFileReference", + "lastKnownFileType": "text.plist.xml", + "path": "openFrameworks-Info.plist", + "sourceTree": "" + }, + "E4C2427710CC5ABF004149E2": { + "buildActionMask": "2147483647", + "dstPath": "", + "dstSubfolderSpec": "10", + "files": [], + "isa": "PBXCopyFilesBuildPhase", + "runOnlyForDeploymentPostprocessing": "0" + }, + "E4EB6923138AFD0F00A09F29": { + "fileEncoding": "4", + "isa": "PBXFileReference", + "lastKnownFileType": "text.xcconfig", + "path": "Project.xcconfig", + "sourceTree": "" + } + }, + "rootObject": "E4B69B4C0A3A1720003C02F2" } diff --git a/example-sync-sound/example-sync-sound.xcodeproj/xcshareddata/xcschemes/example-sync-sound Debug.xcscheme b/example-sync-sound/example-sync-sound.xcodeproj/xcshareddata/xcschemes/example-sync-sound Debug.xcscheme new file mode 100644 index 0000000..eac145c --- /dev/null +++ b/example-sync-sound/example-sync-sound.xcodeproj/xcshareddata/xcschemes/example-sync-sound Debug.xcscheme @@ -0,0 +1,104 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/example-sync-sound/example-sync-sound.xcodeproj/xcshareddata/xcschemes/example-sync-sound Release.xcscheme b/example-sync-sound/example-sync-sound.xcodeproj/xcshareddata/xcschemes/example-sync-sound Release.xcscheme new file mode 100644 index 0000000..c1b7586 --- /dev/null +++ b/example-sync-sound/example-sync-sound.xcodeproj/xcshareddata/xcschemes/example-sync-sound Release.xcscheme @@ -0,0 +1,104 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/example-sync-sound/of.entitlements b/example-sync-sound/of.entitlements new file mode 100644 index 0000000..f4fc128 --- /dev/null +++ b/example-sync-sound/of.entitlements @@ -0,0 +1,24 @@ + + + + + com.apple.security.app-sandbox + + com.apple.security.device.audio-input + + com.apple.security.device.bluetooth + + com.apple.security.device.camera + + com.apple.security.device.usb + + com.apple.security.files.user-selected.read-write + + com.apple.security.network.client + + com.apple.security.network.server + + com.apple.security.print + + + diff --git a/example-sync-sound/src/main.cpp b/example-sync-sound/src/main.cpp index 6a32c6a..a79738a 100644 --- a/example-sync-sound/src/main.cpp +++ b/example-sync-sound/src/main.cpp @@ -1,16 +1,14 @@ #include "ofMain.h" #include "testApp.h" -#include "ofAppGlutWindow.h" //======================================================================== -int main( ){ - - ofAppGlutWindow window; - ofSetupOpenGL(&window, 1024,768, OF_WINDOW); // <-------- setup the GL context - - // this kicks off the running of my app - // can be OF_WINDOW or OF_FULLSCREEN - // pass in width and height too: - ofRunApp( new testApp()); - +int main() { + ofGLWindowSettings settings; + settings.setSize(1024, 768); + settings.setGLVersion(2, 1); + settings.windowMode = OF_WINDOW; + + auto window = ofCreateWindow(settings); + ofRunApp(window, std::make_shared()); + ofRunMainLoop(); } diff --git a/example-sync-sound/src/testApp.cpp b/example-sync-sound/src/testApp.cpp index e8665df..2ebc6fa 100644 --- a/example-sync-sound/src/testApp.cpp +++ b/example-sync-sound/src/testApp.cpp @@ -1,10 +1,40 @@ #include "testApp.h" +#include + +namespace { + +const std::array kPerfumeMotionFiles = { + "bvhfiles/aachan.bvh", + "bvhfiles/kashiyuka.bvh", + "bvhfiles/nocchi.bvh" +}; + +const std::array kBundledMotionFiles = { + "../../../example-bvh/bin/data/A_test.bvh", + "../../../example-bvh/bin/data/B_test.bvh", + "../../../example-bvh/bin/data/C_test.bvh" +}; + +bool loadMotionFiles(std::array& motions) { + bool loaded = true; + for (size_t i = 0; i < motions.size(); ++i) { + if (!motions[i].load(kPerfumeMotionFiles[i])) { + ofLogWarning("example-sync-sound") + << "Using bundled motion fallback for " << kPerfumeMotionFiles[i]; + loaded = motions[i].load(kBundledMotionFiles[i]) && loaded; + } + } + return loaded; +} + +} // namespace + class Tracker { public: - const ofxBvhJoint *joint; + const ofxBvhJoint *joint = nullptr; deque points; void setup(const ofxBvhJoint *o) @@ -16,8 +46,6 @@ class Tracker { if (joint->getBvh()->isFrameNew()) { - const ofVec3f &p = joint->getPosition(); - points.push_front(joint->getPosition()); if (points.size() > 15) @@ -30,9 +58,10 @@ class Tracker if (points.empty()) return; glBegin(GL_LINE_STRIP); - for (int i = 0; i < points.size() - 1; i++) + for (size_t i = 0; i + 1 < points.size(); ++i) { - float a = ofMap(i, 0, points.size() - 1, 1, 0, true); + float a = ofMap(static_cast(i), 0.0f, + static_cast(points.size() - 1), 1.0f, 0.0f, true); ofVec3f &p0 = points[i]; ofVec3f &p1 = points[i + 1]; @@ -47,8 +76,7 @@ class Tracker } }; -vector trackers; -const float trackDuration = 64.28; +vector> trackers; //-------------------------------------------------------------- void testApp::setup() @@ -58,38 +86,37 @@ void testApp::setup() ofBackground(0); - play_rate = play_rate_t = 1; - rotate = 0; - - bvh.resize(3); - - // You have to get motion and sound data from http://www.perfume-global.com + play_rate = play_rate_t = 1.0f; + rotate = 0.0f; - // setup bvh - bvh[0].load("bvhfiles/aachan.bvh"); - bvh[1].load("bvhfiles/kashiyuka.bvh"); - bvh[2].load("bvhfiles/nocchi.bvh"); + assetsReady = loadMotionFiles(bvh); - for (int i = 0; i < bvh.size(); i++) + for (auto& motion : bvh) { - bvh[i].setFrame(1); + motion.setFrame(1); } - track.loadSound("Perfume_globalsite_sound.wav"); - track.play(); - track.setLoop(true); + audioReady = ofFile::doesFileExist("Perfume_globalsite_sound.wav") + && track.load("Perfume_globalsite_sound.wav"); + if (audioReady) { + track.setLoop(true); + track.play(); + } else { + ofLogNotice("example-sync-sound") + << "Audio file not found; using a silent internal clock."; + } // setup tracker - for (int i = 0; i < bvh.size(); i++) + if (assetsReady) { - ofxBvh &b = bvh[i]; - - for (int n = 0; n < b.getNumJoints(); n++) + for (auto& motion : bvh) { - const ofxBvhJoint *o = b.getJoint(n); - Tracker *t = new Tracker; - t->setup(o); - trackers.push_back(t); + for (int n = 0; n < motion.getNumJoints(); ++n) + { + auto tracker = std::make_unique(); + tracker->setup(motion.getJoint(n)); + trackers.push_back(std::move(tracker)); + } } } } @@ -100,26 +127,36 @@ void testApp::update() rotate += 0.1; play_rate += (play_rate_t - play_rate) * 0.3; - track.setSpeed(play_rate); - - float t = (track.getPosition() * trackDuration); - t = t / bvh[0].getDuration(); + if (audioReady) track.setSpeed(play_rate); + if (!assetsReady) return; + + const float motionDuration = bvh[0].getDuration(); + float motionSeconds = 0.0f; + if (audioReady) { + motionSeconds = track.getPosition() * track.getDuration(); + } else { + fallbackPlayhead += ofGetLastFrameTime() * play_rate; + fallbackPlayhead = std::fmod(fallbackPlayhead, motionDuration); + if (fallbackPlayhead < 0.0f) fallbackPlayhead += motionDuration; + motionSeconds = fallbackPlayhead; + } + const float t = ofClamp(motionSeconds / motionDuration, 0.0f, 1.0f); - for (int i = 0; i < bvh.size(); i++) + for (auto& motion : bvh) { - bvh[i].setPosition(t); - bvh[i].update(); + motion.setPosition(t); + motion.update(); } - for (int i = 0; i < trackers.size(); i++) + for (auto& tracker : trackers) { - trackers[i]->update(); + tracker->update(); } } //-------------------------------------------------------------- void testApp::draw(){ - glEnable(GL_DEPTH_TEST); + ofEnableDepthTest(); ofEnableBlendMode(OF_BLENDMODE_ALPHA); @@ -128,8 +165,8 @@ void testApp::draw(){ ofTranslate(ofGetWidth()/2, ofGetHeight()/2); ofTranslate(0, 150); - ofRotate(-15, 1, 0, 0); - ofRotate(rotate, 0, 1, 0); + ofRotateDeg(-15, 1, 0, 0); + ofRotateDeg(rotate, 0, 1, 0); ofScale(1, -1, 1); @@ -139,31 +176,35 @@ void testApp::draw(){ // draw ground ofPushMatrix(); - ofRotate(90, 1, 0, 0); - ofLine(100, 0, -100, 0); - ofLine(0, 100, 0, -100); + ofRotateDeg(90, 1, 0, 0); + ofDrawLine(100, 0, -100, 0); + ofDrawLine(0, 100, 0, -100); ofPopMatrix(); // draw actor - for (int i = 0; i < bvh.size(); i++) + for (auto& motion : bvh) { - bvh[i].draw(); + motion.draw(); } // draw tracker - glDisable(GL_DEPTH_TEST); + ofDisableDepthTest(); ofEnableBlendMode(OF_BLENDMODE_ADD); ofSetColor(ofColor::white, 80); - for (int i = 0; i < trackers.size(); i++) + for (auto& tracker : trackers) { - trackers[i]->draw(); + tracker->draw(); } } ofPopMatrix(); ofSetColor(255); ofDrawBitmapString("press any key to scratch\nplay_rate: " + ofToString(play_rate, 1), 10, 20); + if (!assetsReady) + ofDrawBitmapString("Motion data is missing. See README.md.", 10, 65); + else if (!audioReady) + ofDrawBitmapString("Audio data is missing; running with a silent clock.", 10, 65); } //-------------------------------------------------------------- diff --git a/example-sync-sound/src/testApp.h b/example-sync-sound/src/testApp.h index 3caf3c3..b39cbd2 100644 --- a/example-sync-sound/src/testApp.h +++ b/example-sync-sound/src/testApp.h @@ -3,27 +3,33 @@ #include "ofMain.h" #include "ofxBvh.h" -class testApp : public ofBaseApp{ +#include + +class testApp : public ofBaseApp { public: - void setup(); - void update(); - void draw(); + void setup() override; + void update() override; + void draw() override; - void keyPressed (int key); - void keyReleased(int key); - void mouseMoved(int x, int y ); - void mouseDragged(int x, int y, int button); - void mousePressed(int x, int y, int button); - void mouseReleased(int x, int y, int button); - void windowResized(int w, int h); - void dragEvent(ofDragInfo dragInfo); - void gotMessage(ofMessage msg); + void keyPressed(int key) override; + void keyReleased(int key) override; + void mouseMoved(int x, int y) override; + void mouseDragged(int x, int y, int button) override; + void mousePressed(int x, int y, int button) override; + void mouseReleased(int x, int y, int button) override; + void windowResized(int w, int h) override; + void dragEvent(ofDragInfo dragInfo) override; + void gotMessage(ofMessage msg) override; ofSoundPlayer track; - vector bvh; + std::array bvh; - float rotate; + float rotate = 0.0f; - float play_rate, play_rate_t; + float play_rate = 1.0f; + float play_rate_t = 1.0f; + float fallbackPlayhead = 0.0f; + bool assetsReady = false; + bool audioReady = false; }; diff --git a/marching-cubes/Makefile b/marching-cubes/Makefile new file mode 100644 index 0000000..14403c4 --- /dev/null +++ b/marching-cubes/Makefile @@ -0,0 +1,10 @@ +# Attempt to load project-specific configuration. +ifneq ($(wildcard config.make),) + include config.make +endif + +ifndef OF_ROOT + OF_ROOT=../../../.. +endif + +include $(OF_ROOT)/libs/openFrameworksCompiled/project/makefileCommon/compile.project.mk diff --git a/marching-cubes/MarchingCubes.xcodeproj/project.pbxproj b/marching-cubes/MarchingCubes.xcodeproj/project.pbxproj deleted file mode 100644 index badc9d0..0000000 --- a/marching-cubes/MarchingCubes.xcodeproj/project.pbxproj +++ /dev/null @@ -1,704 +0,0 @@ -// !$*UTF8*$! -{ - archiveVersion = 1; - classes = { - }; - objectVersion = 42; - objects = { - -/* Begin PBXBuildFile section */ - 189D7ED7151C0108009F94D1 /* tinyxml.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 189D7ED0151C0108009F94D1 /* tinyxml.cpp */; }; - 189D7ED8151C0108009F94D1 /* tinyxmlerror.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 189D7ED2151C0108009F94D1 /* tinyxmlerror.cpp */; }; - 189D7ED9151C0108009F94D1 /* tinyxmlparser.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 189D7ED3151C0108009F94D1 /* tinyxmlparser.cpp */; }; - 189D7EDA151C0108009F94D1 /* ofxXmlSettings.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 189D7ED5151C0108009F94D1 /* ofxXmlSettings.cpp */; }; - 60BF72001529A18D00604CB3 /* ofxMarchingCubes.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 60BF71EC1529A18D00604CB3 /* ofxMarchingCubes.cpp */; }; - 60BF72011529A18D00604CB3 /* ofxSTLExporter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 60BF71F41529A18D00604CB3 /* ofxSTLExporter.cpp */; }; - 60BF72021529A18D00604CB3 /* ofxSTLImporter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 60BF71F71529A18D00604CB3 /* ofxSTLImporter.cpp */; }; - 60BF72091529A19200604CB3 /* ofxBvh.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 60BF72071529A19200604CB3 /* ofxBvh.cpp */; }; - BBAB23CB13894F3D00AA2426 /* GLUT.framework in CopyFiles */ = {isa = PBXBuildFile; fileRef = BBAB23BE13894E4700AA2426 /* GLUT.framework */; }; - E4328149138ABC9F0047C5CB /* openFrameworksDebug.a in Frameworks */ = {isa = PBXBuildFile; fileRef = E4328148138ABC890047C5CB /* openFrameworksDebug.a */; }; - E45BE97B0E8CC7DD009D7055 /* AGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E45BE9710E8CC7DD009D7055 /* AGL.framework */; }; - E45BE97C0E8CC7DD009D7055 /* ApplicationServices.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E45BE9720E8CC7DD009D7055 /* ApplicationServices.framework */; }; - E45BE97D0E8CC7DD009D7055 /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E45BE9730E8CC7DD009D7055 /* AudioToolbox.framework */; }; - E45BE97E0E8CC7DD009D7055 /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E45BE9740E8CC7DD009D7055 /* Carbon.framework */; }; - E45BE97F0E8CC7DD009D7055 /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E45BE9750E8CC7DD009D7055 /* CoreAudio.framework */; }; - E45BE9800E8CC7DD009D7055 /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E45BE9760E8CC7DD009D7055 /* CoreFoundation.framework */; }; - E45BE9810E8CC7DD009D7055 /* CoreServices.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E45BE9770E8CC7DD009D7055 /* CoreServices.framework */; }; - E45BE9830E8CC7DD009D7055 /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E45BE9790E8CC7DD009D7055 /* OpenGL.framework */; }; - E45BE9840E8CC7DD009D7055 /* QuickTime.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E45BE97A0E8CC7DD009D7055 /* QuickTime.framework */; }; - E4B69E200A3A1BDC003C02F2 /* main.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E4B69E1D0A3A1BDC003C02F2 /* main.cpp */; }; - E4B69E210A3A1BDC003C02F2 /* testApp.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E4B69E1E0A3A1BDC003C02F2 /* testApp.cpp */; }; - E4C2424710CC5A17004149E2 /* AppKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E4C2424410CC5A17004149E2 /* AppKit.framework */; }; - E4C2424810CC5A17004149E2 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E4C2424510CC5A17004149E2 /* Cocoa.framework */; }; - E4C2424910CC5A17004149E2 /* IOKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E4C2424610CC5A17004149E2 /* IOKit.framework */; }; - E4EB6799138ADC1D00A09F29 /* GLUT.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BBAB23BE13894E4700AA2426 /* GLUT.framework */; }; -/* End PBXBuildFile section */ - -/* Begin PBXContainerItemProxy section */ - E4328147138ABC890047C5CB /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = E4328143138ABC890047C5CB /* openFrameworksLib.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = E4B27C1510CBEB8E00536013; - remoteInfo = openFrameworks; - }; - E4EEB9AB138B136A00A80321 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = E4328143138ABC890047C5CB /* openFrameworksLib.xcodeproj */; - proxyType = 1; - remoteGlobalIDString = E4B27C1410CBEB8E00536013; - remoteInfo = openFrameworks; - }; -/* End PBXContainerItemProxy section */ - -/* Begin PBXCopyFilesBuildPhase section */ - E4C2427710CC5ABF004149E2 /* CopyFiles */ = { - isa = PBXCopyFilesBuildPhase; - buildActionMask = 2147483647; - dstPath = ""; - dstSubfolderSpec = 10; - files = ( - BBAB23CB13894F3D00AA2426 /* GLUT.framework in CopyFiles */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXCopyFilesBuildPhase section */ - -/* Begin PBXFileReference section */ - 18884F2C1524DB3800022243 /* MetaBall.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MetaBall.h; sourceTree = ""; }; - 189D7ECE151C0108009F94D1 /* install.xml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = install.xml; sourceTree = ""; }; - 189D7ED0151C0108009F94D1 /* tinyxml.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = tinyxml.cpp; sourceTree = ""; }; - 189D7ED1151C0108009F94D1 /* tinyxml.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tinyxml.h; sourceTree = ""; }; - 189D7ED2151C0108009F94D1 /* tinyxmlerror.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = tinyxmlerror.cpp; sourceTree = ""; }; - 189D7ED3151C0108009F94D1 /* tinyxmlparser.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = tinyxmlparser.cpp; sourceTree = ""; }; - 189D7ED5151C0108009F94D1 /* ofxXmlSettings.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ofxXmlSettings.cpp; sourceTree = ""; }; - 189D7ED6151C0108009F94D1 /* ofxXmlSettings.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ofxXmlSettings.h; sourceTree = ""; }; - 60BF71E71529A15400604CB3 /* MarchingCubesDebug.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = MarchingCubesDebug.app; sourceTree = BUILT_PRODUCTS_DIR; }; - 60BF71EC1529A18D00604CB3 /* ofxMarchingCubes.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ofxMarchingCubes.cpp; sourceTree = ""; }; - 60BF71ED1529A18D00604CB3 /* ofxMarchingCubes.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ofxMarchingCubes.h; sourceTree = ""; }; - 60BF71EE1529A18D00604CB3 /* ofxMCTypes.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ofxMCTypes.h; sourceTree = ""; }; - 60BF71EF1529A18D00604CB3 /* Tables.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Tables.h; sourceTree = ""; }; - 60BF71F21529A18D00604CB3 /* ofxSTL.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ofxSTL.h; sourceTree = ""; }; - 60BF71F31529A18D00604CB3 /* ofxSTLBase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ofxSTLBase.h; sourceTree = ""; }; - 60BF71F41529A18D00604CB3 /* ofxSTLExporter.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ofxSTLExporter.cpp; sourceTree = ""; }; - 60BF71F51529A18D00604CB3 /* ofxSTLExporter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ofxSTLExporter.h; sourceTree = ""; }; - 60BF71F61529A18D00604CB3 /* ofxSTLFacet.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ofxSTLFacet.h; sourceTree = ""; }; - 60BF71F71529A18D00604CB3 /* ofxSTLImporter.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ofxSTLImporter.cpp; sourceTree = ""; }; - 60BF71F81529A18D00604CB3 /* ofxSTLImporter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ofxSTLImporter.h; sourceTree = ""; }; - 60BF71FA1529A18D00604CB3 /* ofxSTLASCIIReader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ofxSTLASCIIReader.h; sourceTree = ""; }; - 60BF71FB1529A18D00604CB3 /* ofxSTLASCIIWriter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ofxSTLASCIIWriter.h; sourceTree = ""; }; - 60BF71FC1529A18D00604CB3 /* ofxSTLBinaryReader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ofxSTLBinaryReader.h; sourceTree = ""; }; - 60BF71FD1529A18D00604CB3 /* ofxSTLBinaryWriter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ofxSTLBinaryWriter.h; sourceTree = ""; }; - 60BF71FE1529A18D00604CB3 /* ofxSTLReaderBase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ofxSTLReaderBase.h; sourceTree = ""; }; - 60BF71FF1529A18D00604CB3 /* ofxSTLWriterBase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ofxSTLWriterBase.h; sourceTree = ""; }; - 60BF72041529A19200604CB3 /* .gitignore */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = .gitignore; sourceTree = ""; }; - 60BF72051529A19200604CB3 /* LICENSE */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = LICENSE; sourceTree = ""; }; - 60BF72071529A19200604CB3 /* ofxBvh.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ofxBvh.cpp; sourceTree = ""; }; - 60BF72081529A19200604CB3 /* ofxBvh.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ofxBvh.h; sourceTree = ""; }; - BBAB23BE13894E4700AA2426 /* GLUT.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = GLUT.framework; path = ../../../libs/glut/lib/osx/GLUT.framework; sourceTree = ""; }; - E4328143138ABC890047C5CB /* openFrameworksLib.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = openFrameworksLib.xcodeproj; path = ../../../libs/openFrameworksCompiled/project/osx/openFrameworksLib.xcodeproj; sourceTree = SOURCE_ROOT; }; - E45BE9710E8CC7DD009D7055 /* AGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AGL.framework; path = /System/Library/Frameworks/AGL.framework; sourceTree = ""; }; - E45BE9720E8CC7DD009D7055 /* ApplicationServices.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = ApplicationServices.framework; path = /System/Library/Frameworks/ApplicationServices.framework; sourceTree = ""; }; - E45BE9730E8CC7DD009D7055 /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioToolbox.framework; path = /System/Library/Frameworks/AudioToolbox.framework; sourceTree = ""; }; - E45BE9740E8CC7DD009D7055 /* Carbon.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Carbon.framework; path = /System/Library/Frameworks/Carbon.framework; sourceTree = ""; }; - E45BE9750E8CC7DD009D7055 /* CoreAudio.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreAudio.framework; path = /System/Library/Frameworks/CoreAudio.framework; sourceTree = ""; }; - E45BE9760E8CC7DD009D7055 /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreFoundation.framework; path = /System/Library/Frameworks/CoreFoundation.framework; sourceTree = ""; }; - E45BE9770E8CC7DD009D7055 /* CoreServices.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreServices.framework; path = /System/Library/Frameworks/CoreServices.framework; sourceTree = ""; }; - E45BE9790E8CC7DD009D7055 /* OpenGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGL.framework; path = /System/Library/Frameworks/OpenGL.framework; sourceTree = ""; }; - E45BE97A0E8CC7DD009D7055 /* QuickTime.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuickTime.framework; path = /System/Library/Frameworks/QuickTime.framework; sourceTree = ""; }; - E4B69E1D0A3A1BDC003C02F2 /* main.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = main.cpp; path = src/main.cpp; sourceTree = SOURCE_ROOT; }; - E4B69E1E0A3A1BDC003C02F2 /* testApp.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.cpp; fileEncoding = 4; name = testApp.cpp; path = src/testApp.cpp; sourceTree = SOURCE_ROOT; }; - E4B69E1F0A3A1BDC003C02F2 /* testApp.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = testApp.h; path = src/testApp.h; sourceTree = SOURCE_ROOT; }; - E4B6FCAD0C3E899E008CF71C /* openFrameworks-Info.plist */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text.plist.xml; path = "openFrameworks-Info.plist"; sourceTree = ""; }; - E4C2424410CC5A17004149E2 /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = /System/Library/Frameworks/AppKit.framework; sourceTree = ""; }; - E4C2424510CC5A17004149E2 /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = /System/Library/Frameworks/Cocoa.framework; sourceTree = ""; }; - E4C2424610CC5A17004149E2 /* IOKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = IOKit.framework; path = /System/Library/Frameworks/IOKit.framework; sourceTree = ""; }; - E4EB691F138AFCF100A09F29 /* CoreOF.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = CoreOF.xcconfig; path = ../../../libs/openFrameworksCompiled/project/osx/CoreOF.xcconfig; sourceTree = SOURCE_ROOT; }; - E4EB6923138AFD0F00A09F29 /* Project.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = Project.xcconfig; sourceTree = ""; }; -/* End PBXFileReference section */ - -/* Begin PBXFrameworksBuildPhase section */ - E4B69B590A3A1756003C02F2 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - E4EB6799138ADC1D00A09F29 /* GLUT.framework in Frameworks */, - E4328149138ABC9F0047C5CB /* openFrameworksDebug.a in Frameworks */, - E45BE97B0E8CC7DD009D7055 /* AGL.framework in Frameworks */, - E45BE97C0E8CC7DD009D7055 /* ApplicationServices.framework in Frameworks */, - E45BE97D0E8CC7DD009D7055 /* AudioToolbox.framework in Frameworks */, - E45BE97E0E8CC7DD009D7055 /* Carbon.framework in Frameworks */, - E45BE97F0E8CC7DD009D7055 /* CoreAudio.framework in Frameworks */, - E45BE9800E8CC7DD009D7055 /* CoreFoundation.framework in Frameworks */, - E45BE9810E8CC7DD009D7055 /* CoreServices.framework in Frameworks */, - E45BE9830E8CC7DD009D7055 /* OpenGL.framework in Frameworks */, - E45BE9840E8CC7DD009D7055 /* QuickTime.framework in Frameworks */, - E4C2424710CC5A17004149E2 /* AppKit.framework in Frameworks */, - E4C2424810CC5A17004149E2 /* Cocoa.framework in Frameworks */, - E4C2424910CC5A17004149E2 /* IOKit.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXFrameworksBuildPhase section */ - -/* Begin PBXGroup section */ - 189D7ECD151C0108009F94D1 /* ofxXmlSettings */ = { - isa = PBXGroup; - children = ( - 189D7ECE151C0108009F94D1 /* install.xml */, - 189D7ECF151C0108009F94D1 /* libs */, - 189D7ED4151C0108009F94D1 /* src */, - ); - name = ofxXmlSettings; - path = ../../../addons/ofxXmlSettings; - sourceTree = ""; - }; - 189D7ECF151C0108009F94D1 /* libs */ = { - isa = PBXGroup; - children = ( - 189D7ED0151C0108009F94D1 /* tinyxml.cpp */, - 189D7ED1151C0108009F94D1 /* tinyxml.h */, - 189D7ED2151C0108009F94D1 /* tinyxmlerror.cpp */, - 189D7ED3151C0108009F94D1 /* tinyxmlparser.cpp */, - ); - path = libs; - sourceTree = ""; - }; - 189D7ED4151C0108009F94D1 /* src */ = { - isa = PBXGroup; - children = ( - 189D7ED5151C0108009F94D1 /* ofxXmlSettings.cpp */, - 189D7ED6151C0108009F94D1 /* ofxXmlSettings.h */, - ); - path = src; - sourceTree = ""; - }; - 60BF71EA1529A18D00604CB3 /* ofxMarchingCubes */ = { - isa = PBXGroup; - children = ( - 60BF71EB1529A18D00604CB3 /* src */, - ); - name = ofxMarchingCubes; - path = ../../../addons/ofxMarchingCubes; - sourceTree = ""; - }; - 60BF71EB1529A18D00604CB3 /* src */ = { - isa = PBXGroup; - children = ( - 60BF71EC1529A18D00604CB3 /* ofxMarchingCubes.cpp */, - 60BF71ED1529A18D00604CB3 /* ofxMarchingCubes.h */, - 60BF71EE1529A18D00604CB3 /* ofxMCTypes.h */, - 60BF71EF1529A18D00604CB3 /* Tables.h */, - ); - path = src; - sourceTree = ""; - }; - 60BF71F01529A18D00604CB3 /* ofxSTL */ = { - isa = PBXGroup; - children = ( - 60BF71F11529A18D00604CB3 /* src */, - ); - name = ofxSTL; - path = ../../../addons/ofxSTL; - sourceTree = ""; - }; - 60BF71F11529A18D00604CB3 /* src */ = { - isa = PBXGroup; - children = ( - 60BF71F21529A18D00604CB3 /* ofxSTL.h */, - 60BF71F31529A18D00604CB3 /* ofxSTLBase.h */, - 60BF71F41529A18D00604CB3 /* ofxSTLExporter.cpp */, - 60BF71F51529A18D00604CB3 /* ofxSTLExporter.h */, - 60BF71F61529A18D00604CB3 /* ofxSTLFacet.h */, - 60BF71F71529A18D00604CB3 /* ofxSTLImporter.cpp */, - 60BF71F81529A18D00604CB3 /* ofxSTLImporter.h */, - 60BF71F91529A18D00604CB3 /* utils */, - ); - path = src; - sourceTree = ""; - }; - 60BF71F91529A18D00604CB3 /* utils */ = { - isa = PBXGroup; - children = ( - 60BF71FA1529A18D00604CB3 /* ofxSTLASCIIReader.h */, - 60BF71FB1529A18D00604CB3 /* ofxSTLASCIIWriter.h */, - 60BF71FC1529A18D00604CB3 /* ofxSTLBinaryReader.h */, - 60BF71FD1529A18D00604CB3 /* ofxSTLBinaryWriter.h */, - 60BF71FE1529A18D00604CB3 /* ofxSTLReaderBase.h */, - 60BF71FF1529A18D00604CB3 /* ofxSTLWriterBase.h */, - ); - path = utils; - sourceTree = ""; - }; - 60BF72031529A19200604CB3 /* ofxBvh */ = { - isa = PBXGroup; - children = ( - 60BF72041529A19200604CB3 /* .gitignore */, - 60BF72051529A19200604CB3 /* LICENSE */, - 60BF72061529A19200604CB3 /* src */, - ); - name = ofxBvh; - path = ../../../addons/ofxBvh; - sourceTree = ""; - }; - 60BF72061529A19200604CB3 /* src */ = { - isa = PBXGroup; - children = ( - 60BF72071529A19200604CB3 /* ofxBvh.cpp */, - 60BF72081529A19200604CB3 /* ofxBvh.h */, - ); - path = src; - sourceTree = ""; - }; - BB4B014C10F69532006C3DED /* addons */ = { - isa = PBXGroup; - children = ( - 60BF72031529A19200604CB3 /* ofxBvh */, - 60BF71EA1529A18D00604CB3 /* ofxMarchingCubes */, - 60BF71F01529A18D00604CB3 /* ofxSTL */, - 189D7ECD151C0108009F94D1 /* ofxXmlSettings */, - ); - name = addons; - sourceTree = ""; - }; - BBAB23C913894ECA00AA2426 /* system frameworks */ = { - isa = PBXGroup; - children = ( - E4C2424410CC5A17004149E2 /* AppKit.framework */, - E4C2424510CC5A17004149E2 /* Cocoa.framework */, - E4C2424610CC5A17004149E2 /* IOKit.framework */, - E45BE9710E8CC7DD009D7055 /* AGL.framework */, - E45BE9720E8CC7DD009D7055 /* ApplicationServices.framework */, - E45BE9730E8CC7DD009D7055 /* AudioToolbox.framework */, - E45BE9740E8CC7DD009D7055 /* Carbon.framework */, - E45BE9750E8CC7DD009D7055 /* CoreAudio.framework */, - E45BE9760E8CC7DD009D7055 /* CoreFoundation.framework */, - E45BE9770E8CC7DD009D7055 /* CoreServices.framework */, - E45BE9790E8CC7DD009D7055 /* OpenGL.framework */, - E45BE97A0E8CC7DD009D7055 /* QuickTime.framework */, - ); - name = "system frameworks"; - sourceTree = ""; - }; - BBAB23CA13894EDB00AA2426 /* 3rd party frameworks */ = { - isa = PBXGroup; - children = ( - BBAB23BE13894E4700AA2426 /* GLUT.framework */, - ); - name = "3rd party frameworks"; - sourceTree = ""; - }; - E4328144138ABC890047C5CB /* Products */ = { - isa = PBXGroup; - children = ( - E4328148138ABC890047C5CB /* openFrameworksDebug.a */, - ); - name = Products; - sourceTree = ""; - }; - E45BE5980E8CC70C009D7055 /* frameworks */ = { - isa = PBXGroup; - children = ( - BBAB23CA13894EDB00AA2426 /* 3rd party frameworks */, - BBAB23C913894ECA00AA2426 /* system frameworks */, - ); - name = frameworks; - sourceTree = ""; - }; - E4B69B4A0A3A1720003C02F2 = { - isa = PBXGroup; - children = ( - E4B6FCAD0C3E899E008CF71C /* openFrameworks-Info.plist */, - E4EB6923138AFD0F00A09F29 /* Project.xcconfig */, - E4B69E1C0A3A1BDC003C02F2 /* src */, - E4EEC9E9138DF44700A80321 /* openFrameworks */, - BB4B014C10F69532006C3DED /* addons */, - E45BE5980E8CC70C009D7055 /* frameworks */, - 60BF71E71529A15400604CB3 /* MarchingCubesDebug.app */, - ); - sourceTree = ""; - }; - E4B69E1C0A3A1BDC003C02F2 /* src */ = { - isa = PBXGroup; - children = ( - E4B69E1D0A3A1BDC003C02F2 /* main.cpp */, - E4B69E1F0A3A1BDC003C02F2 /* testApp.h */, - E4B69E1E0A3A1BDC003C02F2 /* testApp.cpp */, - 18884F2C1524DB3800022243 /* MetaBall.h */, - ); - path = src; - sourceTree = SOURCE_ROOT; - }; - E4EEC9E9138DF44700A80321 /* openFrameworks */ = { - isa = PBXGroup; - children = ( - E4EB691F138AFCF100A09F29 /* CoreOF.xcconfig */, - E4328143138ABC890047C5CB /* openFrameworksLib.xcodeproj */, - ); - name = openFrameworks; - sourceTree = ""; - }; -/* End PBXGroup section */ - -/* Begin PBXNativeTarget section */ - E4B69B5A0A3A1756003C02F2 /* MarchingCubes */ = { - isa = PBXNativeTarget; - buildConfigurationList = E4B69B5F0A3A1757003C02F2 /* Build configuration list for PBXNativeTarget "MarchingCubes" */; - buildPhases = ( - E4B69B580A3A1756003C02F2 /* Sources */, - E4B69B590A3A1756003C02F2 /* Frameworks */, - E4B6FFFD0C3F9AB9008CF71C /* ShellScript */, - E4C2427710CC5ABF004149E2 /* CopyFiles */, - ); - buildRules = ( - ); - dependencies = ( - E4EEB9AC138B136A00A80321 /* PBXTargetDependency */, - ); - name = MarchingCubes; - productName = myOFApp; - productReference = 60BF71E71529A15400604CB3 /* MarchingCubesDebug.app */; - productType = "com.apple.product-type.application"; - }; -/* End PBXNativeTarget section */ - -/* Begin PBXProject section */ - E4B69B4C0A3A1720003C02F2 /* Project object */ = { - isa = PBXProject; - buildConfigurationList = E4B69B4D0A3A1720003C02F2 /* Build configuration list for PBXProject "MarchingCubes" */; - compatibilityVersion = "Xcode 2.4"; - developmentRegion = English; - hasScannedForEncodings = 0; - knownRegions = ( - English, - Japanese, - French, - German, - ); - mainGroup = E4B69B4A0A3A1720003C02F2; - productRefGroup = E4B69B4A0A3A1720003C02F2; - projectDirPath = ""; - projectReferences = ( - { - ProductGroup = E4328144138ABC890047C5CB /* Products */; - ProjectRef = E4328143138ABC890047C5CB /* openFrameworksLib.xcodeproj */; - }, - ); - projectRoot = ""; - targets = ( - E4B69B5A0A3A1756003C02F2 /* MarchingCubes */, - ); - }; -/* End PBXProject section */ - -/* Begin PBXReferenceProxy section */ - E4328148138ABC890047C5CB /* openFrameworksDebug.a */ = { - isa = PBXReferenceProxy; - fileType = archive.ar; - path = openFrameworksDebug.a; - remoteRef = E4328147138ABC890047C5CB /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; -/* End PBXReferenceProxy section */ - -/* Begin PBXShellScriptBuildPhase section */ - E4B6FFFD0C3F9AB9008CF71C /* ShellScript */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - ); - outputPaths = ( - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "cp -f ../../../libs/fmodex/lib/osx/libfmodex.dylib \"$TARGET_BUILD_DIR/$PRODUCT_NAME.app/Contents/MacOS/libfmodex.dylib\"; install_name_tool -change ./libfmodex.dylib @executable_path/libfmodex.dylib \"$TARGET_BUILD_DIR/$PRODUCT_NAME.app/Contents/MacOS/$PRODUCT_NAME\";"; - }; -/* End PBXShellScriptBuildPhase section */ - -/* Begin PBXSourcesBuildPhase section */ - E4B69B580A3A1756003C02F2 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - E4B69E200A3A1BDC003C02F2 /* main.cpp in Sources */, - E4B69E210A3A1BDC003C02F2 /* testApp.cpp in Sources */, - 189D7ED7151C0108009F94D1 /* tinyxml.cpp in Sources */, - 189D7ED8151C0108009F94D1 /* tinyxmlerror.cpp in Sources */, - 189D7ED9151C0108009F94D1 /* tinyxmlparser.cpp in Sources */, - 189D7EDA151C0108009F94D1 /* ofxXmlSettings.cpp in Sources */, - 60BF72001529A18D00604CB3 /* ofxMarchingCubes.cpp in Sources */, - 60BF72011529A18D00604CB3 /* ofxSTLExporter.cpp in Sources */, - 60BF72021529A18D00604CB3 /* ofxSTLImporter.cpp in Sources */, - 60BF72091529A19200604CB3 /* ofxBvh.cpp in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXSourcesBuildPhase section */ - -/* Begin PBXTargetDependency section */ - E4EEB9AC138B136A00A80321 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = openFrameworks; - targetProxy = E4EEB9AB138B136A00A80321 /* PBXContainerItemProxy */; - }; -/* End PBXTargetDependency section */ - -/* Begin XCBuildConfiguration section */ - E4B69B4E0A3A1720003C02F2 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = E4EB6923138AFD0F00A09F29 /* Project.xcconfig */; - buildSettings = { - ARCHS = "$(NATIVE_ARCH)"; - CONFIGURATION_BUILD_DIR = "$(SRCROOT)/bin/"; - COPY_PHASE_STRIP = NO; - DEAD_CODE_STRIPPING = YES; - GCC_AUTO_VECTORIZATION = YES; - GCC_ENABLE_SSE3_EXTENSIONS = YES; - GCC_ENABLE_SUPPLEMENTAL_SSE3_INSTRUCTIONS = YES; - GCC_INLINES_ARE_PRIVATE_EXTERN = NO; - GCC_MODEL_TUNING = G5; - GCC_SYMBOLS_PRIVATE_EXTERN = NO; - GCC_VERSION = com.apple.compilers.llvm.clang.1_0; - GCC_WARN_ABOUT_DEPRECATED_FUNCTIONS = NO; - GCC_WARN_ABOUT_INVALID_OFFSETOF_MACRO = NO; - GCC_WARN_ALLOW_INCOMPLETE_PROTOCOL = NO; - GCC_WARN_UNINITIALIZED_AUTOS = NO; - GCC_WARN_UNUSED_VALUE = NO; - GCC_WARN_UNUSED_VARIABLE = NO; - OTHER_CPLUSPLUSFLAGS = ( - "-D__MACOSX_CORE__", - "-lpthread", - ); - }; - name = Debug; - }; - E4B69B4F0A3A1720003C02F2 /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = E4EB6923138AFD0F00A09F29 /* Project.xcconfig */; - buildSettings = { - ARCHS = "$(NATIVE_ARCH)"; - CONFIGURATION_BUILD_DIR = "$(SRCROOT)/bin/"; - COPY_PHASE_STRIP = YES; - DEAD_CODE_STRIPPING = YES; - GCC_AUTO_VECTORIZATION = YES; - GCC_ENABLE_SSE3_EXTENSIONS = YES; - GCC_ENABLE_SUPPLEMENTAL_SSE3_INSTRUCTIONS = YES; - GCC_INLINES_ARE_PRIVATE_EXTERN = NO; - GCC_MODEL_TUNING = G5; - GCC_OPTIMIZATION_LEVEL = 3; - GCC_SYMBOLS_PRIVATE_EXTERN = NO; - GCC_UNROLL_LOOPS = YES; - GCC_VERSION = com.apple.compilers.llvm.clang.1_0; - GCC_WARN_ABOUT_DEPRECATED_FUNCTIONS = NO; - GCC_WARN_ABOUT_INVALID_OFFSETOF_MACRO = NO; - GCC_WARN_ALLOW_INCOMPLETE_PROTOCOL = NO; - GCC_WARN_UNINITIALIZED_AUTOS = NO; - GCC_WARN_UNUSED_VALUE = NO; - GCC_WARN_UNUSED_VARIABLE = NO; - OTHER_CPLUSPLUSFLAGS = ( - "-D__MACOSX_CORE__", - "-lpthread", - ); - }; - name = Release; - }; - E4B69B600A3A1757003C02F2 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - COPY_PHASE_STRIP = NO; - FRAMEWORK_SEARCH_PATHS = ( - "$(inherited)", - "$(FRAMEWORK_SEARCH_PATHS_QUOTED_FOR_TARGET_1)", - ); - FRAMEWORK_SEARCH_PATHS_QUOTED_FOR_TARGET_1 = "\"$(SRCROOT)/../../../libs/glut/lib/osx\""; - GCC_DYNAMIC_NO_PIC = NO; - GCC_ENABLE_FIX_AND_CONTINUE = YES; - GCC_GENERATE_DEBUGGING_SYMBOLS = YES; - GCC_MODEL_TUNING = G4; - GCC_PRECOMPILE_PREFIX_HEADER = YES; - GCC_PREFIX_HEADER = "$(SYSTEM_LIBRARY_DIR)/Frameworks/Carbon.framework/Headers/Carbon.h"; - INFOPLIST_FILE = "openFrameworks-Info.plist"; - INSTALL_PATH = "$(HOME)/Applications"; - LIBRARY_SEARCH_PATHS = ( - "$(inherited)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_1)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_2)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_3)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_4)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_5)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_6)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_7)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_8)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_9)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_10)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_11)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_12)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_13)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_14)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_15)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_2)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_3)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_7)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_8)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_9)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_10)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_11)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_12)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_13)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_16)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_17)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_18)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_19)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_20)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_21)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_22)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_23)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_24)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_25)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_26)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_27)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_28)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_29)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_30)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_31)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_32)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_33)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_34)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_35)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_36)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_37)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_38)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_39)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_40)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_41)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_42)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_43)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_44)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_45)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_46)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_47)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_48)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_49)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_50)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_51)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_52)", - ); - PREBINDING = NO; - PRODUCT_NAME = "$(TARGET_NAME)Debug"; - WRAPPER_EXTENSION = app; - }; - name = Debug; - }; - E4B69B610A3A1757003C02F2 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - COPY_PHASE_STRIP = YES; - FRAMEWORK_SEARCH_PATHS = ( - "$(inherited)", - "$(FRAMEWORK_SEARCH_PATHS_QUOTED_FOR_TARGET_1)", - ); - FRAMEWORK_SEARCH_PATHS_QUOTED_FOR_TARGET_1 = "\"$(SRCROOT)/../../../libs/glut/lib/osx\""; - GCC_ENABLE_FIX_AND_CONTINUE = NO; - GCC_GENERATE_DEBUGGING_SYMBOLS = NO; - GCC_MODEL_TUNING = G4; - GCC_PRECOMPILE_PREFIX_HEADER = YES; - GCC_PREFIX_HEADER = "$(SYSTEM_LIBRARY_DIR)/Frameworks/Carbon.framework/Headers/Carbon.h"; - INFOPLIST_FILE = "openFrameworks-Info.plist"; - INSTALL_PATH = "$(HOME)/Applications"; - LIBRARY_SEARCH_PATHS = ( - "$(inherited)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_1)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_2)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_3)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_4)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_5)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_6)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_7)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_8)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_9)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_10)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_11)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_12)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_13)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_14)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_15)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_2)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_1)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_3)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_7)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_8)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_9)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_10)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_11)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_12)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_13)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_16)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_17)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_18)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_19)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_20)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_21)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_22)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_23)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_24)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_25)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_26)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_27)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_28)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_29)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_30)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_31)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_32)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_33)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_34)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_35)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_36)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_37)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_38)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_39)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_40)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_41)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_42)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_43)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_44)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_45)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_46)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_47)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_48)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_49)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_50)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_51)", - ); - PREBINDING = NO; - PRODUCT_NAME = "$(TARGET_NAME)"; - WRAPPER_EXTENSION = app; - }; - name = Release; - }; -/* End XCBuildConfiguration section */ - -/* Begin XCConfigurationList section */ - E4B69B4D0A3A1720003C02F2 /* Build configuration list for PBXProject "MarchingCubes" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - E4B69B4E0A3A1720003C02F2 /* Debug */, - E4B69B4F0A3A1720003C02F2 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - E4B69B5F0A3A1757003C02F2 /* Build configuration list for PBXNativeTarget "MarchingCubes" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - E4B69B600A3A1757003C02F2 /* Debug */, - E4B69B610A3A1757003C02F2 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; -/* End XCConfigurationList section */ - }; - rootObject = E4B69B4C0A3A1720003C02F2 /* Project object */; -} diff --git a/marching-cubes/MarchingCubes.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/marching-cubes/MarchingCubes.xcodeproj/project.xcworkspace/contents.xcworkspacedata deleted file mode 100644 index 65d05f2..0000000 --- a/marching-cubes/MarchingCubes.xcodeproj/project.xcworkspace/contents.xcworkspacedata +++ /dev/null @@ -1,7 +0,0 @@ - - - - - diff --git a/marching-cubes/Project.xcconfig b/marching-cubes/Project.xcconfig index c10b9e5..7c338e1 100644 --- a/marching-cubes/Project.xcconfig +++ b/marching-cubes/Project.xcconfig @@ -1,9 +1,88 @@ //THE PATH TO THE ROOT OF OUR OF PATH RELATIVE TO THIS PROJECT. //THIS NEEDS TO BE DEFINED BEFORE CoreOF.xcconfig IS INCLUDED -OF_PATH = ../../.. +OF_PATH = ../../../.. //THIS HAS ALL THE HEADER AND LIBS FOR OF CORE -#include "../../../libs/openFrameworksCompiled/project/osx/CoreOF.xcconfig" +#include "../../../../libs/openFrameworksCompiled/project/osx/CoreOF.xcconfig" -OTHER_LDFLAGS = $(OF_CORE_LIBS) +//UNCOMMENT BELOW TO ENABLE C++ 17 and std::filesystem +CLANG_CXX_LANGUAGE_STANDARD = c++23 +CLANG_C_LANGUAGE_STANDARD = c17 +MACOSX_DEPLOYMENT_TARGET = 11.5 + +// App Settings +PRODUCT_NAME = $(TARGET_NAME) +PRODUCT_NAME[config=Debug] = $(TARGET_NAME)Debug +PRODUCT_BUNDLE_IDENTIFIER = cc.openFrameworks.${TARGET_NAME:rfc1034identifier} +//PRODUCT_BUNDLE_IDENTIFIER[config=Debug] = cc.openFrameworks.$(TARGET_NAME)Debug +DEVELOPMENT_LANGUAGE = English +CODE_SIGN_IDENTITY = - +INFOPLIST_FILE = openFrameworks-Info.plist +GENERATE_INFOPLIST_FILE = YES + +// set application category to games, this is required to enable Game mode +// note: this sets the initial value in the Xcode UI +INFOPLIST_KEY_LSApplicationCategoryType = public.app-category.games + +// VERSIONING - overridden if changed in Xcode UI + +// this is "Version" in the Xcode target Identity UI +// suggested to use semantic versioning format ala #.#.# +MARKETING_VERSION = 0.1.0 + +// If users upgrade project to recommended settings it enables script sandboxing which breaks our post build script +ENABLE_USER_SCRIPT_SANDBOXING=NO + +// this is "Build" in the Xcode target Identity UI, an incremental build number +// important for the App Store as new build submissions need a diff number even +// if MARKETING_VERSION is the same +CURRENT_PROJECT_VERSION = 1 + +// ICONS + +// default oF app icon +ICON_NAME = of.icns +ICON_NAME[config=Debug] = of_debug.icns +ICON_FILE = $(OF_PATH)/libs/openFrameworksCompiled/project/osx/$(ICON_NAME) + +// custom app icon, placed in main project folder +//ICON_NAME = MyApp.icns +//ICON_FILE = $(ICON_NAME) + +// custom app icon with separate Release and Debug versions placed in bin/data +//ICON_NAME = icon.icns +//ICON_NAME[config=Debug] = icon-debug.icns +//ICON_FILE = bin/data/$(ICON_NAME) + +// note: oF 0.7.2 - 0.11 used ICON_FILE_PATH which is no longer used in oF 0.12+ +// ex. change ICON_FILE_PATH = bin/data/ -> ICON_FILE = bin/data/$(ICON_NAME) & +// in a custom openFrameworks-Info.plist, set CFBundleIconFile to ICON_NAME + +//APPSTORE, uncomment next lines to bundle data folder and code sign +//OF_CODESIGN = 1 +//OF_BUNDLE_DATA_FOLDER = 1 +//OF_BUNDLE_DYLIBS = 1 + +HIGH_RESOLUTION_CAPABLE = NO + +// Optional include to keep any permanent settings as CODE_SIGN_IDENTITY. +#include? "App.xcconfig" + +//FOR AV ENGINE SOUND PLAYER UNCOMMENT THREE LINES BELOW +OF_NO_FMOD=1 +USER_PREPROCESSOR_DEFINITIONS="OF_NO_FMOD=1" +LIB_FMOD="" +GCC_PREPROCESSOR_DEFINITIONS=$(inherited) $(USER_PREPROCESSOR_DEFINITIONS) + +OTHER_CFLAGS = $(OF_CORE_CFLAGS) +OTHER_LDFLAGS = $(OF_CORE_LIBS) $(OF_CORE_FRAMEWORKS) HEADER_SEARCH_PATHS = $(OF_CORE_HEADERS) + +//THIS MAKES SURE THE APP BUILDS INSIDE THE BIN FOLDER +//If you comment this line out the app will be run from DerrivedData and your data/ files won't be accessible unless you uncomment OF_BUNDLE_DATA_FOLDER = 1 above +CONFIGURATION_BUILD_DIR = ${SRCROOT}/bin + +//OF_CORE_BUILD_COMMAND = echo \"💾 Compiling openFrameworks\"\nxcodebuild -project \"$OF_PATH/libs/openFrameworksCompiled/project/osx/openFrameworksLib.xcodeproj\" -target openFrameworks -configuration \"${CONFIGURATION}\" CLANG_CXX_LANGUAGE_STANDARD=$CLANG_CXX_LANGUAGE_STANDARD MACOSX_DEPLOYMENT_TARGET=$MACOSX_DEPLOYMENT_TARGET GCC_PREPROCESSOR_DEFINITIONS='$USER_PREPROCESSOR_DEFINITIONS' + + +OF_CORE_BUILD_COMMAND = xcodebuild -project $OF_PATH/libs/openFrameworksCompiled/project/osx/openFrameworksLib.xcodeproj -target openFrameworks -configuration ${CONFIGURATION} CLANG_CXX_LANGUAGE_STANDARD=$CLANG_CXX_LANGUAGE_STANDARD MACOSX_DEPLOYMENT_TARGET=$MACOSX_DEPLOYMENT_TARGET GCC_PREPROCESSOR_DEFINITIONS=$USER_PREPROCESSOR_DEFINITIONS diff --git a/marching-cubes/README.md b/marching-cubes/README.md index f846948..1bac547 100644 --- a/marching-cubes/README.md +++ b/marching-cubes/README.md @@ -4,5 +4,10 @@ ## Dependencies -* [ofxMarchingCubes](http://code.google.com/p/ruicode/downloads/detail?name=ofxMarchingCubes%20002.zip&can=2&q=) -* [ofxSTL](http://code.google.com/p/ruicode/downloads/detail?name=ofxSTL%20001.zip&can=2&q=) \ No newline at end of file +- The repository's local [`ofxBvh`](../ofxBvh) +- The preserved [`ofxMarchingCubes`](../third_party/ofxMarchingCubes) source + +The original Google Code downloads are no longer required. The example does +not use the historical STL export path, so `ofxSTL` is intentionally disabled. +See the [root setup guide](../README.md) for openFrameworks 0.12.1 build and +motion-data instructions. diff --git a/marching-cubes/addons.make b/marching-cubes/addons.make new file mode 100644 index 0000000..c5fe81a --- /dev/null +++ b/marching-cubes/addons.make @@ -0,0 +1,2 @@ +../ofxBvh +../third_party/ofxMarchingCubes diff --git a/marching-cubes/config.make b/marching-cubes/config.make new file mode 100644 index 0000000..c3593ae --- /dev/null +++ b/marching-cubes/config.make @@ -0,0 +1,3 @@ +# This suite is designed to live at apps/myApps/example-openFrameworks. +# Override from any location with: make OF_ROOT=/path/to/openFrameworks +OF_ROOT ?= ../../../.. diff --git a/marching-cubes/marching-cubes.xcodeproj/project.pbxproj b/marching-cubes/marching-cubes.xcodeproj/project.pbxproj new file mode 100644 index 0000000..848bd4b --- /dev/null +++ b/marching-cubes/marching-cubes.xcodeproj/project.pbxproj @@ -0,0 +1,427 @@ +{ + "_OFProjectGeneratorVersion": "0.103.0", + "archiveVersion": "1", + "classes": {}, + "objectVersion": "54", + "objects": { + "0EECC954-1DFD-4313-8EC0-5E9FD6899E60": { + "children": [ + "DBE96C83-6133-44CC-82EA-DB7D7CC49C45" + ], + "isa": "PBXGroup", + "name": "ofxBvh", + "path": "../ofxBvh", + "sourceTree": "SOURCE_ROOT" + }, + "1239315A-17F0-47F0-B245-880B3E1E5285": { + "fileEncoding": "4", + "isa": "PBXFileReference", + "lastKnownFileType": "sourcecode.cpp.h", + "name": "ofxMarchingCubes.h", + "path": "../third_party/ofxMarchingCubes/src/ofxMarchingCubes.h", + "sourceTree": "SOURCE_ROOT" + }, + "191CD6FA2847E21E0085CBB6": { + "fileEncoding": "4", + "isa": "PBXFileReference", + "lastKnownFileType": "text.plist.entitlements", + "path": "of.entitlements", + "sourceTree": "" + }, + "191EF70929D778A400F35F26": { + "isa": "PBXFileReference", + "lastKnownFileType": "folder", + "name": "openFrameworks", + "path": "../../../../libs/openFrameworks", + "sourceTree": "SOURCE_ROOT" + }, + "19B789C429E5AB4A0082E9B8": { + "alwaysOutOfDate": "1", + "buildActionMask": "2147483647", + "files": [], + "inputFileListPaths": [], + "inputPaths": [], + "isa": "PBXShellScriptBuildPhase", + "outputFileListPaths": [], + "outputPaths": [], + "runOnlyForDeploymentPostprocessing": "0", + "shellPath": "/bin/sh", + "shellScript": "\"$OF_PATH/scripts/osx/xcode_project.sh\"\n", + "showEnvVarsInLog": "0" + }, + "1F9294CD-2621-4997-8CC4-04E6B11B28EA": { + "children": [ + "0EECC954-1DFD-4313-8EC0-5E9FD6899E60", + "BB252917-9265-4521-852A-DB240B66481D" + ], + "isa": "PBXGroup", + "name": "local_addons", + "path": "", + "sourceTree": "SOURCE_ROOT" + }, + "22AAE16F-4CF3-4CE6-9BBA-BD8AEF7D0020": { + "fileEncoding": "4", + "isa": "PBXFileReference", + "lastKnownFileType": "folder", + "name": "data", + "path": "bin/data", + "sourceTree": "SOURCE_ROOT" + }, + "3D195E31-0E86-4CF6-8DEE-4407C3554C09": { + "children": [ + "BD85315E-5DB4-4806-BE8C-1BDF65B3D573", + "AF496856-092A-4750-8B0B-F81827998FFB", + "9C00D355-F0BC-42E8-AE0E-116FB2868364", + "1239315A-17F0-47F0-B245-880B3E1E5285" + ], + "isa": "PBXGroup", + "name": "src", + "path": "src", + "sourceTree": "" + }, + "41B536E2-8743-4BD3-A14C-4A48584BED92": { + "fileRef": "461370C5-1FD2-42F0-9FF7-7421CA1DA69E", + "isa": "PBXBuildFile" + }, + "440C8D42-E5C8-46C9-A2EE-E2D0412B4437": { + "fileRef": "D13302A3-9D9F-4EB1-8A8D-EB063BFD1FB9", + "isa": "PBXBuildFile" + }, + "44E0AADC-45B0-4A20-9EDE-82DEC7720829": { + "fileEncoding": "4", + "isa": "PBXFileReference", + "lastKnownFileType": "sourcecode.cpp.h", + "name": "MetaBall.h", + "sourceTree": "" + }, + "461370C5-1FD2-42F0-9FF7-7421CA1DA69E": { + "fileEncoding": "4", + "isa": "PBXFileReference", + "lastKnownFileType": "sourcecode.cpp.cpp", + "name": "testApp.cpp", + "sourceTree": "" + }, + "622082E4-6557-44E8-9FB4-AF3BC4FB0BD3": { + "fileEncoding": "4", + "isa": "PBXFileReference", + "lastKnownFileType": "sourcecode.cpp.h", + "name": "ofxBvh.h", + "path": "../ofxBvh/src/ofxBvh.h", + "sourceTree": "SOURCE_ROOT" + }, + "9C00D355-F0BC-42E8-AE0E-116FB2868364": { + "fileEncoding": "4", + "isa": "PBXFileReference", + "lastKnownFileType": "sourcecode.cpp.cpp", + "name": "ofxMarchingCubes.cpp", + "path": "../third_party/ofxMarchingCubes/src/ofxMarchingCubes.cpp", + "sourceTree": "SOURCE_ROOT" + }, + "AF496856-092A-4750-8B0B-F81827998FFB": { + "fileEncoding": "4", + "isa": "PBXFileReference", + "lastKnownFileType": "sourcecode.cpp.h", + "name": "ofxMCTypes.h", + "path": "../third_party/ofxMarchingCubes/src/ofxMCTypes.h", + "sourceTree": "SOURCE_ROOT" + }, + "BB252917-9265-4521-852A-DB240B66481D": { + "children": [ + "3D195E31-0E86-4CF6-8DEE-4407C3554C09" + ], + "isa": "PBXGroup", + "name": "ofxMarchingCubes", + "path": "../third_party/ofxMarchingCubes", + "sourceTree": "SOURCE_ROOT" + }, + "BB4B014C10F69532006C3DED": { + "children": [], + "isa": "PBXGroup", + "name": "addons", + "path": "../../../../addons", + "sourceTree": "SOURCE_ROOT" + }, + "BD85315E-5DB4-4806-BE8C-1BDF65B3D573": { + "fileEncoding": "4", + "isa": "PBXFileReference", + "lastKnownFileType": "sourcecode.cpp.h", + "name": "Tables.h", + "path": "../third_party/ofxMarchingCubes/src/Tables.h", + "sourceTree": "SOURCE_ROOT" + }, + "D13302A3-9D9F-4EB1-8A8D-EB063BFD1FB9": { + "fileEncoding": "4", + "isa": "PBXFileReference", + "lastKnownFileType": "sourcecode.cpp.cpp", + "name": "ofxBvh.cpp", + "path": "../ofxBvh/src/ofxBvh.cpp", + "sourceTree": "SOURCE_ROOT" + }, + "DBE96C83-6133-44CC-82EA-DB7D7CC49C45": { + "children": [ + "D13302A3-9D9F-4EB1-8A8D-EB063BFD1FB9", + "622082E4-6557-44E8-9FB4-AF3BC4FB0BD3" + ], + "isa": "PBXGroup", + "name": "src", + "path": "src", + "sourceTree": "" + }, + "E42962A92163ECCD00A6A9E2": { + "alwaysOutOfDate": "1", + "buildActionMask": "2147483647", + "files": [], + "inputPaths": [], + "isa": "PBXShellScriptBuildPhase", + "name": "Run Script — Compile OF", + "outputPaths": [], + "runOnlyForDeploymentPostprocessing": "0", + "shellPath": "/bin/sh", + "shellScript": "$OF_CORE_BUILD_COMMAND\n", + "showEnvVarsInLog": "0" + }, + "E4A5B60F29BAAAE400C2D356": { + "buildActionMask": "2147483647", + "dstPath": "", + "dstSubfolderSpec": "6", + "files": [], + "isa": "PBXCopyFilesBuildPhase", + "runOnlyForDeploymentPostprocessing": "0" + }, + "E4B69B4A0A3A1720003C02F2": { + "children": [ + "191CD6FA2847E21E0085CBB6", + "E4B6FCAD0C3E899E008CF71C", + "E4EB6923138AFD0F00A09F29", + "E4B69E1C0A3A1BDC003C02F2", + "191EF70929D778A400F35F26", + "BB4B014C10F69532006C3DED", + "E4B69B5B0A3A1756003C02F2", + "1F9294CD-2621-4997-8CC4-04E6B11B28EA", + "22AAE16F-4CF3-4CE6-9BBA-BD8AEF7D0020" + ], + "isa": "PBXGroup", + "sourceTree": "" + }, + "E4B69B4C0A3A1720003C02F2": { + "attributes": { + "BuildIndependentTargetsInParallel": "YES", + "LastUpgradeCheck": "1540" + }, + "buildConfigurationList": "E4B69B4D0A3A1720003C02F2", + "compatibilityVersion": "Xcode 3.2", + "developmentRegion": "en", + "hasScannedForEncodings": "0", + "isa": "PBXProject", + "knownRegions": [ + "en", + "Base" + ], + "mainGroup": "E4B69B4A0A3A1720003C02F2", + "productRefGroup": "E4B69B4A0A3A1720003C02F2", + "projectDirPath": "", + "projectRoot": "", + "targets": [ + "E4B69B5A0A3A1756003C02F2" + ] + }, + "E4B69B4D0A3A1720003C02F2": { + "buildConfigurations": [ + "E4B69B4E0A3A1720003C02F2", + "E4B69B4F0A3A1720003C02F2" + ], + "defaultConfigurationIsVisible": "0", + "defaultConfigurationName": "Release", + "isa": "XCConfigurationList" + }, + "E4B69B4E0A3A1720003C02F2": { + "baseConfigurationReference": "E4EB6923138AFD0F00A09F29", + "buildSettings": { + "CODE_SIGN_ENTITLEMENTS": "of.entitlements", + "COPY_PHASE_STRIP": "NO", + "ENABLE_TESTABILITY": "YES", + "GCC_OPTIMIZATION_LEVEL": "0", + "GCC_WARN_UNUSED_VARIABLE": "NO", + "HEADER_SEARCH_PATHS": [ + "$(OF_CORE_HEADERS)", + "src" + ], + "OTHER_CPLUSPLUSFLAGS": "-D__MACOSX_CORE__" + }, + "isa": "XCBuildConfiguration", + "name": "Debug" + }, + "E4B69B4F0A3A1720003C02F2": { + "baseConfigurationReference": "E4EB6923138AFD0F00A09F29", + "buildSettings": { + "CODE_SIGN_ENTITLEMENTS": "of.entitlements", + "COPY_PHASE_STRIP": "YES", + "GCC_OPTIMIZATION_LEVEL": "3", + "GCC_UNROLL_LOOPS": "YES", + "HEADER_SEARCH_PATHS": [ + "$(OF_CORE_HEADERS)", + "src" + ], + "OTHER_CPLUSPLUSFLAGS": "-D__MACOSX_CORE__" + }, + "isa": "XCBuildConfiguration", + "name": "Release" + }, + "E4B69B580A3A1756003C02F2": { + "buildActionMask": "2147483647", + "files": [ + "E4B69E200A3A1BDC003C02F2", + "41B536E2-8743-4BD3-A14C-4A48584BED92", + "440C8D42-E5C8-46C9-A2EE-E2D0412B4437", + "EBF0D554-7142-497D-9EDD-EBDC8A29A6D9" + ], + "isa": "PBXSourcesBuildPhase", + "runOnlyForDeploymentPostprocessing": "0" + }, + "E4B69B590A3A1756003C02F2": { + "buildActionMask": "2147483647", + "files": [], + "isa": "PBXFrameworksBuildPhase", + "runOnlyForDeploymentPostprocessing": "0" + }, + "E4B69B5A0A3A1756003C02F2": { + "buildConfigurationList": "E4B69B5F0A3A1757003C02F2", + "buildPhases": [ + "E42962A92163ECCD00A6A9E2", + "E4B69B580A3A1756003C02F2", + "E4B69B590A3A1756003C02F2", + "E4C2427710CC5ABF004149E2", + "E4A5B60F29BAAAE400C2D356", + "19B789C429E5AB4A0082E9B8" + ], + "buildRules": [], + "dependencies": [], + "isa": "PBXNativeTarget", + "name": "marching-cubes", + "productName": "myOFApp", + "productReference": "E4B69B5B0A3A1756003C02F2", + "productType": "com.apple.product-type.application" + }, + "E4B69B5B0A3A1756003C02F2": { + "explicitFileType": "wrapper.application", + "includeInIndex": "0", + "isa": "PBXFileReference", + "path": "marching-cubesDebug.app", + "sourceTree": "BUILT_PRODUCTS_DIR" + }, + "E4B69B5F0A3A1757003C02F2": { + "buildConfigurations": [ + "E4B69B600A3A1757003C02F2", + "E4B69B610A3A1757003C02F2" + ], + "defaultConfigurationIsVisible": "0", + "defaultConfigurationName": "Release", + "isa": "XCConfigurationList" + }, + "E4B69B600A3A1757003C02F2": { + "baseConfigurationReference": "E4EB6923138AFD0F00A09F29", + "buildSettings": { + "ARCHS": "$(ARCHS_STANDARD)", + "COPY_PHASE_STRIP": "NO", + "FRAMEWORK_SEARCH_PATHS": "$(inherited)", + "GCC_DYNAMIC_NO_PIC": "NO", + "HEADER_SEARCH_PATHS": [ + "$(OF_CORE_HEADERS)", + "src", + "src", + "../ofxBvh/src", + "../third_party/ofxMarchingCubes/src" + ], + "LIBRARY_SEARCH_PATHS": "$(inherited)", + "OTHER_LDFLAGS": [ + "$(OF_CORE_LIBS)", + "$(OF_CORE_FRAMEWORKS)", + "$(LIB_OF_DEBUG)" + ] + }, + "isa": "XCBuildConfiguration", + "name": "Debug" + }, + "E4B69B610A3A1757003C02F2": { + "baseConfigurationReference": "E4EB6923138AFD0F00A09F29", + "buildSettings": { + "ARCHS": "$(ARCHS_STANDARD)", + "COPY_PHASE_STRIP": "YES", + "FRAMEWORK_SEARCH_PATHS": "$(inherited)", + "HEADER_SEARCH_PATHS": [ + "$(OF_CORE_HEADERS)", + "src", + "src", + "../ofxBvh/src", + "../third_party/ofxMarchingCubes/src" + ], + "LIBRARY_SEARCH_PATHS": "$(inherited)", + "OTHER_LDFLAGS": [ + "$(OF_CORE_LIBS)", + "$(OF_CORE_FRAMEWORKS)", + "$(LIB_OF_RELEASE)" + ], + "baseConfigurationReference": "E4EB6923138AFD0F00A09F29" + }, + "isa": "XCBuildConfiguration", + "name": "Release" + }, + "E4B69E1C0A3A1BDC003C02F2": { + "children": [ + "E4B69E1D0A3A1BDC003C02F2", + "44E0AADC-45B0-4A20-9EDE-82DEC7720829", + "461370C5-1FD2-42F0-9FF7-7421CA1DA69E", + "EB260B1C-96ED-48BF-BBCA-7257FEB1831E" + ], + "isa": "PBXGroup", + "path": "src", + "sourceTree": "SOURCE_ROOT" + }, + "E4B69E1D0A3A1BDC003C02F2": { + "fileEncoding": "4", + "isa": "PBXFileReference", + "lastKnownFileType": "sourcecode.cpp.cpp", + "name": "main.cpp", + "path": "src/main.cpp", + "sourceTree": "SOURCE_ROOT" + }, + "E4B69E200A3A1BDC003C02F2": { + "fileRef": "E4B69E1D0A3A1BDC003C02F2", + "isa": "PBXBuildFile" + }, + "E4B6FCAD0C3E899E008CF71C": { + "fileEncoding": "4", + "isa": "PBXFileReference", + "lastKnownFileType": "text.plist.xml", + "path": "openFrameworks-Info.plist", + "sourceTree": "" + }, + "E4C2427710CC5ABF004149E2": { + "buildActionMask": "2147483647", + "dstPath": "", + "dstSubfolderSpec": "10", + "files": [], + "isa": "PBXCopyFilesBuildPhase", + "runOnlyForDeploymentPostprocessing": "0" + }, + "E4EB6923138AFD0F00A09F29": { + "fileEncoding": "4", + "isa": "PBXFileReference", + "lastKnownFileType": "text.xcconfig", + "path": "Project.xcconfig", + "sourceTree": "" + }, + "EB260B1C-96ED-48BF-BBCA-7257FEB1831E": { + "fileEncoding": "4", + "isa": "PBXFileReference", + "lastKnownFileType": "sourcecode.cpp.h", + "name": "testApp.h", + "sourceTree": "" + }, + "EBF0D554-7142-497D-9EDD-EBDC8A29A6D9": { + "fileRef": "9C00D355-F0BC-42E8-AE0E-116FB2868364", + "isa": "PBXBuildFile" + } + }, + "rootObject": "E4B69B4C0A3A1720003C02F2" +} diff --git a/marching-cubes/marching-cubes.xcodeproj/xcshareddata/xcschemes/marching-cubes Debug.xcscheme b/marching-cubes/marching-cubes.xcodeproj/xcshareddata/xcschemes/marching-cubes Debug.xcscheme new file mode 100644 index 0000000..8bccf92 --- /dev/null +++ b/marching-cubes/marching-cubes.xcodeproj/xcshareddata/xcschemes/marching-cubes Debug.xcscheme @@ -0,0 +1,104 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/marching-cubes/marching-cubes.xcodeproj/xcshareddata/xcschemes/marching-cubes Release.xcscheme b/marching-cubes/marching-cubes.xcodeproj/xcshareddata/xcschemes/marching-cubes Release.xcscheme new file mode 100644 index 0000000..4b6ca01 --- /dev/null +++ b/marching-cubes/marching-cubes.xcodeproj/xcshareddata/xcschemes/marching-cubes Release.xcscheme @@ -0,0 +1,104 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/marching-cubes/of.entitlements b/marching-cubes/of.entitlements new file mode 100644 index 0000000..f4fc128 --- /dev/null +++ b/marching-cubes/of.entitlements @@ -0,0 +1,24 @@ + + + + + com.apple.security.app-sandbox + + com.apple.security.device.audio-input + + com.apple.security.device.bluetooth + + com.apple.security.device.camera + + com.apple.security.device.usb + + com.apple.security.files.user-selected.read-write + + com.apple.security.network.client + + com.apple.security.network.server + + com.apple.security.print + + + diff --git a/marching-cubes/src/main.cpp b/marching-cubes/src/main.cpp index 6667df2..3e1e85a 100644 --- a/marching-cubes/src/main.cpp +++ b/marching-cubes/src/main.cpp @@ -1,16 +1,14 @@ #include "ofMain.h" #include "testApp.h" -#include "ofAppGlutWindow.h" //======================================================================== -int main( ){ - - ofAppGlutWindow window; - ofSetupOpenGL(&window, 1280,720, OF_WINDOW); // <-------- setup the GL context - - // this kicks off the running of my app - // can be OF_WINDOW or OF_FULLSCREEN - // pass in width and height too: - ofRunApp( new testApp()); - +int main() { + ofGLWindowSettings settings; + settings.setSize(1280, 720); + settings.setGLVersion(2, 1); + settings.windowMode = OF_WINDOW; + + auto window = ofCreateWindow(settings); + ofRunApp(window, std::make_shared()); + ofRunMainLoop(); } diff --git a/marching-cubes/src/testApp.cpp b/marching-cubes/src/testApp.cpp index d704b97..6ad4129 100644 --- a/marching-cubes/src/testApp.cpp +++ b/marching-cubes/src/testApp.cpp @@ -1,26 +1,54 @@ #include "testApp.h" +namespace { + +const std::array kPerfumeMotionFiles = { + "bvhfiles/aachan.bvh", + "bvhfiles/kashiyuka.bvh", + "bvhfiles/nocchi.bvh" +}; + +const std::array kBundledMotionFiles = { + "../../../example-bvh/bin/data/A_test.bvh", + "../../../example-bvh/bin/data/B_test.bvh", + "../../../example-bvh/bin/data/C_test.bvh" +}; + +bool loadMotionFiles(std::array& motions) { + bool loaded = true; + for (size_t i = 0; i < motions.size(); ++i) { + if (!motions[i].load(kPerfumeMotionFiles[i])) { + ofLogWarning("marching-cubes") + << "Using bundled motion fallback for " << kPerfumeMotionFiles[i]; + loaded = motions[i].load(kBundledMotionFiles[i]) && loaded; + } + } + return loaded; +} + +} // namespace + float startTime = 0.02; //-------------------------------------------------------------- void testApp::setup() { ofSetFrameRate(60); ofSetVerticalSync(true); - + rotate = 0; - bvh[0].load("bvhfiles/kashiyuka.bvh"); - bvh[1].load("bvhfiles/nocchi.bvh"); - bvh[2].load("bvhfiles/aachan.bvh"); + assetsReady = loadMotionFiles(bvh); - for (int i = 0; i < 3; i++) { - bvh[i].play(); + audioReady = ofFile::doesFileExist("Perfume_globalsite_sound.wav") + && track.load("Perfume_globalsite_sound.wav"); + if (audioReady) { + track.setLoop(true); + track.play(); + } else { + ofLogNotice("marching-cubes") + << "Audio file not found; using a silent internal clock."; } - track.loadSound("Perfume_globalsite_sound.wav"); - track.play(); - track.setLoop(true); - camera.setFov(30); camera.setDistance(700); @@ -37,7 +65,7 @@ void testApp::setup() { metaBalls.resize(metaballNum); int n = 0; - for (int i = 0; i < 3; i++){ + for (size_t i = 0; i < bvh.size(); ++i){ for (int j = 0; j < bvh[i].getNumJoints(); j++) { const ofxBvhJoint *o = bvh[i].getJoint(j); if (o->isSite()) { @@ -56,18 +84,22 @@ void testApp::setup() { //-------------------------------------------------------------- void testApp::update(){ - float t = (track.getPosition() * 64.28); - t = t / bvh[0].getDuration(); - - for (int i = 0; i < 3; i++) { - bvh[i].setPosition(t); - bvh[i].update(); + if (!assetsReady) return; + const float motionDuration = bvh[0].getDuration(); + const float motionSeconds = audioReady + ? track.getPosition() * track.getDuration() + : std::fmod(ofGetElapsedTimef(), motionDuration); + const float t = ofClamp(motionSeconds / motionDuration, 0.0f, 1.0f); + + for (auto& motion : bvh) { + motion.setPosition(t); + motion.update(); } - + marchingCubes.resetIsoValues(); int n = 0; - for (int i = 0; i < 3; i++){ + for (size_t i = 0; i < bvh.size(); ++i){ for (int j = 0; j < bvh[i].getNumJoints(); j++) { const ofxBvhJoint *o = bvh[i].getJoint(j); if (o->isSite()) { @@ -82,7 +114,7 @@ void testApp::update(){ } } - marchingCubes.update(0.17, true); + marchingCubes.update(threshold, true); } //-------------------------------------------------------------- @@ -93,7 +125,7 @@ void testApp::draw(){ ofPushMatrix(); { ofTranslate(0, -80); - ofRotate(5, 1, 0, 0); + ofRotateDeg(5, 1, 0, 0); ofScale(1, 1, 1); // draw MarchingCubes @@ -117,6 +149,12 @@ void testApp::draw(){ ofPopMatrix(); camera.end(); + ofSetColor(255); + + if (!assetsReady) + ofDrawBitmapString("Motion data is missing. See README.md.", 10, 20); + else if (!audioReady) + ofDrawBitmapString("Audio data is missing; running with a silent clock.", 10, 20); } diff --git a/marching-cubes/src/testApp.h b/marching-cubes/src/testApp.h index ce6bd40..6dfa322 100644 --- a/marching-cubes/src/testApp.h +++ b/marching-cubes/src/testApp.h @@ -3,33 +3,35 @@ #include "ofMain.h" #include "ofxBvh.h" -#include "ofxSTL.h" #include "ofxMarchingCubes.h" #include "MetaBall.h" -class testApp : public ofBaseApp{ +#include + +class testApp : public ofBaseApp { public: - void setup(); - void update(); - void draw(); - void exit(); + void setup() override; + void update() override; + void draw() override; + void exit() override; - void keyPressed (int key); - void keyReleased(int key); - void mouseMoved(int x, int y ); - void mouseDragged(int x, int y, int button); - void mousePressed(int x, int y, int button); - void mouseReleased(int x, int y, int button); - void windowResized(int w, int h); - void dragEvent(ofDragInfo dragInfo); - void gotMessage(ofMessage msg); + void keyPressed(int key) override; + void keyReleased(int key) override; + void mouseMoved(int x, int y) override; + void mouseDragged(int x, int y, int button) override; + void mousePressed(int x, int y, int button) override; + void mouseReleased(int x, int y, int button) override; + void windowResized(int w, int h) override; + void dragEvent(ofDragInfo dragInfo) override; + void gotMessage(ofMessage msg) override; ofSoundPlayer track; - ofxBvh bvh[3]; + std::array bvh; - float rotate; - float play_rate, play_rate_t; + float rotate = 0.0f; + float play_rate = 1.0f; + float play_rate_t = 1.0f; ofEasyCam camera; ofImage background; @@ -37,6 +39,8 @@ class testApp : public ofBaseApp{ ofxMarchingCubes marchingCubes; vector metaBalls; - float threshold; + float threshold = 0.17f; ofLight light; + bool assetsReady = false; + bool audioReady = false; }; diff --git a/motion-visualization/Makefile b/motion-visualization/Makefile new file mode 100644 index 0000000..14403c4 --- /dev/null +++ b/motion-visualization/Makefile @@ -0,0 +1,10 @@ +# Attempt to load project-specific configuration. +ifneq ($(wildcard config.make),) + include config.make +endif + +ifndef OF_ROOT + OF_ROOT=../../../.. +endif + +include $(OF_ROOT)/libs/openFrameworksCompiled/project/makefileCommon/compile.project.mk diff --git a/motion-visualization/MotionVisualization.xcodeproj/project.pbxproj b/motion-visualization/MotionVisualization.xcodeproj/project.pbxproj deleted file mode 100644 index 488d172..0000000 --- a/motion-visualization/MotionVisualization.xcodeproj/project.pbxproj +++ /dev/null @@ -1,573 +0,0 @@ -// !$*UTF8*$! -{ - archiveVersion = 1; - classes = { - }; - objectVersion = 42; - objects = { - -/* Begin PBXBuildFile section */ - 60BF72161529A4D300604CB3 /* ofxBvh.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 60BF72141529A4D300604CB3 /* ofxBvh.cpp */; }; - BBAB23CB13894F3D00AA2426 /* GLUT.framework in CopyFiles */ = {isa = PBXBuildFile; fileRef = BBAB23BE13894E4700AA2426 /* GLUT.framework */; }; - E4328149138ABC9F0047C5CB /* openFrameworksDebug.a in Frameworks */ = {isa = PBXBuildFile; fileRef = E4328148138ABC890047C5CB /* openFrameworksDebug.a */; }; - E45BE97B0E8CC7DD009D7055 /* AGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E45BE9710E8CC7DD009D7055 /* AGL.framework */; }; - E45BE97C0E8CC7DD009D7055 /* ApplicationServices.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E45BE9720E8CC7DD009D7055 /* ApplicationServices.framework */; }; - E45BE97D0E8CC7DD009D7055 /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E45BE9730E8CC7DD009D7055 /* AudioToolbox.framework */; }; - E45BE97E0E8CC7DD009D7055 /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E45BE9740E8CC7DD009D7055 /* Carbon.framework */; }; - E45BE97F0E8CC7DD009D7055 /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E45BE9750E8CC7DD009D7055 /* CoreAudio.framework */; }; - E45BE9800E8CC7DD009D7055 /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E45BE9760E8CC7DD009D7055 /* CoreFoundation.framework */; }; - E45BE9810E8CC7DD009D7055 /* CoreServices.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E45BE9770E8CC7DD009D7055 /* CoreServices.framework */; }; - E45BE9830E8CC7DD009D7055 /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E45BE9790E8CC7DD009D7055 /* OpenGL.framework */; }; - E45BE9840E8CC7DD009D7055 /* QuickTime.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E45BE97A0E8CC7DD009D7055 /* QuickTime.framework */; }; - E4B69E200A3A1BDC003C02F2 /* main.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E4B69E1D0A3A1BDC003C02F2 /* main.cpp */; }; - E4B69E210A3A1BDC003C02F2 /* testApp.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E4B69E1E0A3A1BDC003C02F2 /* testApp.cpp */; }; - E4C2424710CC5A17004149E2 /* AppKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E4C2424410CC5A17004149E2 /* AppKit.framework */; }; - E4C2424810CC5A17004149E2 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E4C2424510CC5A17004149E2 /* Cocoa.framework */; }; - E4C2424910CC5A17004149E2 /* IOKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E4C2424610CC5A17004149E2 /* IOKit.framework */; }; - E4EB6799138ADC1D00A09F29 /* GLUT.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BBAB23BE13894E4700AA2426 /* GLUT.framework */; }; -/* End PBXBuildFile section */ - -/* Begin PBXContainerItemProxy section */ - E4328147138ABC890047C5CB /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = E4328143138ABC890047C5CB /* openFrameworksLib.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = E4B27C1510CBEB8E00536013; - remoteInfo = openFrameworks; - }; - E4EEB9AB138B136A00A80321 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = E4328143138ABC890047C5CB /* openFrameworksLib.xcodeproj */; - proxyType = 1; - remoteGlobalIDString = E4B27C1410CBEB8E00536013; - remoteInfo = openFrameworks; - }; -/* End PBXContainerItemProxy section */ - -/* Begin PBXCopyFilesBuildPhase section */ - E4C2427710CC5ABF004149E2 /* CopyFiles */ = { - isa = PBXCopyFilesBuildPhase; - buildActionMask = 2147483647; - dstPath = ""; - dstSubfolderSpec = 10; - files = ( - BBAB23CB13894F3D00AA2426 /* GLUT.framework in CopyFiles */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXCopyFilesBuildPhase section */ - -/* Begin PBXFileReference section */ - 60BF72111529A4D300604CB3 /* .gitignore */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = .gitignore; sourceTree = ""; }; - 60BF72121529A4D300604CB3 /* LICENSE */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = LICENSE; sourceTree = ""; }; - 60BF72141529A4D300604CB3 /* ofxBvh.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ofxBvh.cpp; sourceTree = ""; }; - 60BF72151529A4D300604CB3 /* ofxBvh.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ofxBvh.h; sourceTree = ""; }; - BBAB23BE13894E4700AA2426 /* GLUT.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = GLUT.framework; path = ../../../libs/glut/lib/osx/GLUT.framework; sourceTree = ""; }; - E4328143138ABC890047C5CB /* openFrameworksLib.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = openFrameworksLib.xcodeproj; path = ../../../libs/openFrameworksCompiled/project/osx/openFrameworksLib.xcodeproj; sourceTree = SOURCE_ROOT; }; - E45BE9710E8CC7DD009D7055 /* AGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AGL.framework; path = /System/Library/Frameworks/AGL.framework; sourceTree = ""; }; - E45BE9720E8CC7DD009D7055 /* ApplicationServices.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = ApplicationServices.framework; path = /System/Library/Frameworks/ApplicationServices.framework; sourceTree = ""; }; - E45BE9730E8CC7DD009D7055 /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioToolbox.framework; path = /System/Library/Frameworks/AudioToolbox.framework; sourceTree = ""; }; - E45BE9740E8CC7DD009D7055 /* Carbon.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Carbon.framework; path = /System/Library/Frameworks/Carbon.framework; sourceTree = ""; }; - E45BE9750E8CC7DD009D7055 /* CoreAudio.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreAudio.framework; path = /System/Library/Frameworks/CoreAudio.framework; sourceTree = ""; }; - E45BE9760E8CC7DD009D7055 /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreFoundation.framework; path = /System/Library/Frameworks/CoreFoundation.framework; sourceTree = ""; }; - E45BE9770E8CC7DD009D7055 /* CoreServices.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreServices.framework; path = /System/Library/Frameworks/CoreServices.framework; sourceTree = ""; }; - E45BE9790E8CC7DD009D7055 /* OpenGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGL.framework; path = /System/Library/Frameworks/OpenGL.framework; sourceTree = ""; }; - E45BE97A0E8CC7DD009D7055 /* QuickTime.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuickTime.framework; path = /System/Library/Frameworks/QuickTime.framework; sourceTree = ""; }; - E4B69B5B0A3A1756003C02F2 /* prfm_tadokoroDebug.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = prfm_tadokoroDebug.app; sourceTree = BUILT_PRODUCTS_DIR; }; - E4B69E1D0A3A1BDC003C02F2 /* main.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = main.cpp; path = src/main.cpp; sourceTree = SOURCE_ROOT; }; - E4B69E1E0A3A1BDC003C02F2 /* testApp.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.cpp; fileEncoding = 4; name = testApp.cpp; path = src/testApp.cpp; sourceTree = SOURCE_ROOT; }; - E4B69E1F0A3A1BDC003C02F2 /* testApp.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = testApp.h; path = src/testApp.h; sourceTree = SOURCE_ROOT; }; - E4B6FCAD0C3E899E008CF71C /* openFrameworks-Info.plist */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text.plist.xml; path = "openFrameworks-Info.plist"; sourceTree = ""; }; - E4C2424410CC5A17004149E2 /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = /System/Library/Frameworks/AppKit.framework; sourceTree = ""; }; - E4C2424510CC5A17004149E2 /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = /System/Library/Frameworks/Cocoa.framework; sourceTree = ""; }; - E4C2424610CC5A17004149E2 /* IOKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = IOKit.framework; path = /System/Library/Frameworks/IOKit.framework; sourceTree = ""; }; - E4EB691F138AFCF100A09F29 /* CoreOF.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = CoreOF.xcconfig; path = ../../../libs/openFrameworksCompiled/project/osx/CoreOF.xcconfig; sourceTree = SOURCE_ROOT; }; - E4EB6923138AFD0F00A09F29 /* Project.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = Project.xcconfig; sourceTree = ""; }; -/* End PBXFileReference section */ - -/* Begin PBXFrameworksBuildPhase section */ - E4B69B590A3A1756003C02F2 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - E4EB6799138ADC1D00A09F29 /* GLUT.framework in Frameworks */, - E4328149138ABC9F0047C5CB /* openFrameworksDebug.a in Frameworks */, - E45BE97B0E8CC7DD009D7055 /* AGL.framework in Frameworks */, - E45BE97C0E8CC7DD009D7055 /* ApplicationServices.framework in Frameworks */, - E45BE97D0E8CC7DD009D7055 /* AudioToolbox.framework in Frameworks */, - E45BE97E0E8CC7DD009D7055 /* Carbon.framework in Frameworks */, - E45BE97F0E8CC7DD009D7055 /* CoreAudio.framework in Frameworks */, - E45BE9800E8CC7DD009D7055 /* CoreFoundation.framework in Frameworks */, - E45BE9810E8CC7DD009D7055 /* CoreServices.framework in Frameworks */, - E45BE9830E8CC7DD009D7055 /* OpenGL.framework in Frameworks */, - E45BE9840E8CC7DD009D7055 /* QuickTime.framework in Frameworks */, - E4C2424710CC5A17004149E2 /* AppKit.framework in Frameworks */, - E4C2424810CC5A17004149E2 /* Cocoa.framework in Frameworks */, - E4C2424910CC5A17004149E2 /* IOKit.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXFrameworksBuildPhase section */ - -/* Begin PBXGroup section */ - 60BF72101529A4D200604CB3 /* ofxBvh */ = { - isa = PBXGroup; - children = ( - 60BF72111529A4D300604CB3 /* .gitignore */, - 60BF72121529A4D300604CB3 /* LICENSE */, - 60BF72131529A4D300604CB3 /* src */, - ); - name = ofxBvh; - path = ../../../addons/ofxBvh; - sourceTree = ""; - }; - 60BF72131529A4D300604CB3 /* src */ = { - isa = PBXGroup; - children = ( - 60BF72141529A4D300604CB3 /* ofxBvh.cpp */, - 60BF72151529A4D300604CB3 /* ofxBvh.h */, - ); - path = src; - sourceTree = ""; - }; - BB4B014C10F69532006C3DED /* addons */ = { - isa = PBXGroup; - children = ( - 60BF72101529A4D200604CB3 /* ofxBvh */, - ); - name = addons; - sourceTree = ""; - }; - BBAB23C913894ECA00AA2426 /* system frameworks */ = { - isa = PBXGroup; - children = ( - E4C2424410CC5A17004149E2 /* AppKit.framework */, - E4C2424510CC5A17004149E2 /* Cocoa.framework */, - E4C2424610CC5A17004149E2 /* IOKit.framework */, - E45BE9710E8CC7DD009D7055 /* AGL.framework */, - E45BE9720E8CC7DD009D7055 /* ApplicationServices.framework */, - E45BE9730E8CC7DD009D7055 /* AudioToolbox.framework */, - E45BE9740E8CC7DD009D7055 /* Carbon.framework */, - E45BE9750E8CC7DD009D7055 /* CoreAudio.framework */, - E45BE9760E8CC7DD009D7055 /* CoreFoundation.framework */, - E45BE9770E8CC7DD009D7055 /* CoreServices.framework */, - E45BE9790E8CC7DD009D7055 /* OpenGL.framework */, - E45BE97A0E8CC7DD009D7055 /* QuickTime.framework */, - ); - name = "system frameworks"; - sourceTree = ""; - }; - BBAB23CA13894EDB00AA2426 /* 3rd party frameworks */ = { - isa = PBXGroup; - children = ( - BBAB23BE13894E4700AA2426 /* GLUT.framework */, - ); - name = "3rd party frameworks"; - sourceTree = ""; - }; - E4328144138ABC890047C5CB /* Products */ = { - isa = PBXGroup; - children = ( - E4328148138ABC890047C5CB /* openFrameworksDebug.a */, - ); - name = Products; - sourceTree = ""; - }; - E45BE5980E8CC70C009D7055 /* frameworks */ = { - isa = PBXGroup; - children = ( - BBAB23CA13894EDB00AA2426 /* 3rd party frameworks */, - BBAB23C913894ECA00AA2426 /* system frameworks */, - ); - name = frameworks; - sourceTree = ""; - }; - E4B69B4A0A3A1720003C02F2 = { - isa = PBXGroup; - children = ( - E4B6FCAD0C3E899E008CF71C /* openFrameworks-Info.plist */, - E4EB6923138AFD0F00A09F29 /* Project.xcconfig */, - E4B69E1C0A3A1BDC003C02F2 /* src */, - E4EEC9E9138DF44700A80321 /* openFrameworks */, - BB4B014C10F69532006C3DED /* addons */, - E45BE5980E8CC70C009D7055 /* frameworks */, - E4B69B5B0A3A1756003C02F2 /* prfm_tadokoroDebug.app */, - ); - sourceTree = ""; - }; - E4B69E1C0A3A1BDC003C02F2 /* src */ = { - isa = PBXGroup; - children = ( - E4B69E1D0A3A1BDC003C02F2 /* main.cpp */, - E4B69E1F0A3A1BDC003C02F2 /* testApp.h */, - E4B69E1E0A3A1BDC003C02F2 /* testApp.cpp */, - ); - path = src; - sourceTree = SOURCE_ROOT; - }; - E4EEC9E9138DF44700A80321 /* openFrameworks */ = { - isa = PBXGroup; - children = ( - E4EB691F138AFCF100A09F29 /* CoreOF.xcconfig */, - E4328143138ABC890047C5CB /* openFrameworksLib.xcodeproj */, - ); - name = openFrameworks; - sourceTree = ""; - }; -/* End PBXGroup section */ - -/* Begin PBXNativeTarget section */ - E4B69B5A0A3A1756003C02F2 /* MotionVisualization */ = { - isa = PBXNativeTarget; - buildConfigurationList = E4B69B5F0A3A1757003C02F2 /* Build configuration list for PBXNativeTarget "MotionVisualization" */; - buildPhases = ( - E4B69B580A3A1756003C02F2 /* Sources */, - E4B69B590A3A1756003C02F2 /* Frameworks */, - E4B6FFFD0C3F9AB9008CF71C /* ShellScript */, - E4C2427710CC5ABF004149E2 /* CopyFiles */, - ); - buildRules = ( - ); - dependencies = ( - E4EEB9AC138B136A00A80321 /* PBXTargetDependency */, - ); - name = MotionVisualization; - productName = myOFApp; - productReference = E4B69B5B0A3A1756003C02F2 /* prfm_tadokoroDebug.app */; - productType = "com.apple.product-type.application"; - }; -/* End PBXNativeTarget section */ - -/* Begin PBXProject section */ - E4B69B4C0A3A1720003C02F2 /* Project object */ = { - isa = PBXProject; - buildConfigurationList = E4B69B4D0A3A1720003C02F2 /* Build configuration list for PBXProject "MotionVisualization" */; - compatibilityVersion = "Xcode 2.4"; - developmentRegion = English; - hasScannedForEncodings = 0; - knownRegions = ( - English, - Japanese, - French, - German, - ); - mainGroup = E4B69B4A0A3A1720003C02F2; - productRefGroup = E4B69B4A0A3A1720003C02F2; - projectDirPath = ""; - projectReferences = ( - { - ProductGroup = E4328144138ABC890047C5CB /* Products */; - ProjectRef = E4328143138ABC890047C5CB /* openFrameworksLib.xcodeproj */; - }, - ); - projectRoot = ""; - targets = ( - E4B69B5A0A3A1756003C02F2 /* MotionVisualization */, - ); - }; -/* End PBXProject section */ - -/* Begin PBXReferenceProxy section */ - E4328148138ABC890047C5CB /* openFrameworksDebug.a */ = { - isa = PBXReferenceProxy; - fileType = archive.ar; - path = openFrameworksDebug.a; - remoteRef = E4328147138ABC890047C5CB /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; -/* End PBXReferenceProxy section */ - -/* Begin PBXShellScriptBuildPhase section */ - E4B6FFFD0C3F9AB9008CF71C /* ShellScript */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - ); - outputPaths = ( - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "cp -f ../../../libs/fmodex/lib/osx/libfmodex.dylib \"$TARGET_BUILD_DIR/$PRODUCT_NAME.app/Contents/MacOS/libfmodex.dylib\"; install_name_tool -change ./libfmodex.dylib @executable_path/libfmodex.dylib \"$TARGET_BUILD_DIR/$PRODUCT_NAME.app/Contents/MacOS/$PRODUCT_NAME\";"; - }; -/* End PBXShellScriptBuildPhase section */ - -/* Begin PBXSourcesBuildPhase section */ - E4B69B580A3A1756003C02F2 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - E4B69E200A3A1BDC003C02F2 /* main.cpp in Sources */, - E4B69E210A3A1BDC003C02F2 /* testApp.cpp in Sources */, - 60BF72161529A4D300604CB3 /* ofxBvh.cpp in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXSourcesBuildPhase section */ - -/* Begin PBXTargetDependency section */ - E4EEB9AC138B136A00A80321 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = openFrameworks; - targetProxy = E4EEB9AB138B136A00A80321 /* PBXContainerItemProxy */; - }; -/* End PBXTargetDependency section */ - -/* Begin XCBuildConfiguration section */ - E4B69B4E0A3A1720003C02F2 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = E4EB6923138AFD0F00A09F29 /* Project.xcconfig */; - buildSettings = { - ARCHS = "$(NATIVE_ARCH)"; - CONFIGURATION_BUILD_DIR = "$(SRCROOT)/bin/"; - COPY_PHASE_STRIP = NO; - DEAD_CODE_STRIPPING = YES; - GCC_AUTO_VECTORIZATION = YES; - GCC_ENABLE_SSE3_EXTENSIONS = YES; - GCC_ENABLE_SUPPLEMENTAL_SSE3_INSTRUCTIONS = YES; - GCC_INLINES_ARE_PRIVATE_EXTERN = NO; - GCC_MODEL_TUNING = G5; - GCC_SYMBOLS_PRIVATE_EXTERN = NO; - GCC_VERSION = com.apple.compilers.llvm.clang.1_0; - GCC_WARN_ABOUT_DEPRECATED_FUNCTIONS = NO; - GCC_WARN_ABOUT_INVALID_OFFSETOF_MACRO = NO; - GCC_WARN_ALLOW_INCOMPLETE_PROTOCOL = NO; - GCC_WARN_UNINITIALIZED_AUTOS = NO; - GCC_WARN_UNUSED_VALUE = NO; - GCC_WARN_UNUSED_VARIABLE = NO; - OTHER_CPLUSPLUSFLAGS = ( - "-D__MACOSX_CORE__", - "-lpthread", - ); - }; - name = Debug; - }; - E4B69B4F0A3A1720003C02F2 /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = E4EB6923138AFD0F00A09F29 /* Project.xcconfig */; - buildSettings = { - ARCHS = "$(NATIVE_ARCH)"; - CONFIGURATION_BUILD_DIR = "$(SRCROOT)/bin/"; - COPY_PHASE_STRIP = YES; - DEAD_CODE_STRIPPING = YES; - GCC_AUTO_VECTORIZATION = YES; - GCC_ENABLE_SSE3_EXTENSIONS = YES; - GCC_ENABLE_SUPPLEMENTAL_SSE3_INSTRUCTIONS = YES; - GCC_INLINES_ARE_PRIVATE_EXTERN = NO; - GCC_MODEL_TUNING = G5; - GCC_OPTIMIZATION_LEVEL = 3; - GCC_SYMBOLS_PRIVATE_EXTERN = NO; - GCC_UNROLL_LOOPS = YES; - GCC_VERSION = com.apple.compilers.llvm.clang.1_0; - GCC_WARN_ABOUT_DEPRECATED_FUNCTIONS = NO; - GCC_WARN_ABOUT_INVALID_OFFSETOF_MACRO = NO; - GCC_WARN_ALLOW_INCOMPLETE_PROTOCOL = NO; - GCC_WARN_UNINITIALIZED_AUTOS = NO; - GCC_WARN_UNUSED_VALUE = NO; - GCC_WARN_UNUSED_VARIABLE = NO; - OTHER_CPLUSPLUSFLAGS = ( - "-D__MACOSX_CORE__", - "-lpthread", - ); - }; - name = Release; - }; - E4B69B600A3A1757003C02F2 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - COPY_PHASE_STRIP = NO; - FRAMEWORK_SEARCH_PATHS = ( - "$(inherited)", - "$(FRAMEWORK_SEARCH_PATHS_QUOTED_FOR_TARGET_1)", - ); - FRAMEWORK_SEARCH_PATHS_QUOTED_FOR_TARGET_1 = "\"$(SRCROOT)/../../../libs/glut/lib/osx\""; - GCC_DYNAMIC_NO_PIC = NO; - GCC_ENABLE_FIX_AND_CONTINUE = YES; - GCC_GENERATE_DEBUGGING_SYMBOLS = YES; - GCC_MODEL_TUNING = G4; - GCC_PRECOMPILE_PREFIX_HEADER = YES; - GCC_PREFIX_HEADER = "$(SYSTEM_LIBRARY_DIR)/Frameworks/Carbon.framework/Headers/Carbon.h"; - INFOPLIST_FILE = "openFrameworks-Info.plist"; - INSTALL_PATH = "$(HOME)/Applications"; - LIBRARY_SEARCH_PATHS = ( - "$(inherited)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_1)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_2)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_3)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_4)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_5)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_6)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_7)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_8)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_9)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_10)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_11)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_12)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_13)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_14)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_15)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_2)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_3)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_7)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_8)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_9)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_10)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_11)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_12)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_13)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_16)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_17)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_18)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_19)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_20)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_21)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_22)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_23)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_24)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_25)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_26)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_27)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_28)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_29)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_30)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_31)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_32)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_33)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_34)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_35)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_36)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_37)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_38)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_39)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_40)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_41)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_42)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_43)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_44)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_45)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_46)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_47)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_48)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_49)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_50)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_51)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_52)", - ); - PREBINDING = NO; - PRODUCT_NAME = "$(TARGET_NAME)Debug"; - WRAPPER_EXTENSION = app; - }; - name = Debug; - }; - E4B69B610A3A1757003C02F2 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - COPY_PHASE_STRIP = YES; - FRAMEWORK_SEARCH_PATHS = ( - "$(inherited)", - "$(FRAMEWORK_SEARCH_PATHS_QUOTED_FOR_TARGET_1)", - ); - FRAMEWORK_SEARCH_PATHS_QUOTED_FOR_TARGET_1 = "\"$(SRCROOT)/../../../libs/glut/lib/osx\""; - GCC_ENABLE_FIX_AND_CONTINUE = NO; - GCC_GENERATE_DEBUGGING_SYMBOLS = NO; - GCC_MODEL_TUNING = G4; - GCC_PRECOMPILE_PREFIX_HEADER = YES; - GCC_PREFIX_HEADER = "$(SYSTEM_LIBRARY_DIR)/Frameworks/Carbon.framework/Headers/Carbon.h"; - INFOPLIST_FILE = "openFrameworks-Info.plist"; - INSTALL_PATH = "$(HOME)/Applications"; - LIBRARY_SEARCH_PATHS = ( - "$(inherited)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_1)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_2)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_3)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_4)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_5)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_6)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_7)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_8)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_9)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_10)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_11)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_12)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_13)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_14)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_15)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_2)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_1)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_3)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_7)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_8)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_9)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_10)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_11)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_12)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_13)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_16)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_17)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_18)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_19)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_20)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_21)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_22)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_23)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_24)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_25)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_26)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_27)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_28)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_29)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_30)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_31)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_32)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_33)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_34)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_35)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_36)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_37)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_38)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_39)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_40)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_41)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_42)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_43)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_44)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_45)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_46)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_47)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_48)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_49)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_50)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_51)", - ); - PREBINDING = NO; - PRODUCT_NAME = "$(TARGET_NAME)"; - WRAPPER_EXTENSION = app; - }; - name = Release; - }; -/* End XCBuildConfiguration section */ - -/* Begin XCConfigurationList section */ - E4B69B4D0A3A1720003C02F2 /* Build configuration list for PBXProject "MotionVisualization" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - E4B69B4E0A3A1720003C02F2 /* Debug */, - E4B69B4F0A3A1720003C02F2 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - E4B69B5F0A3A1757003C02F2 /* Build configuration list for PBXNativeTarget "MotionVisualization" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - E4B69B600A3A1757003C02F2 /* Debug */, - E4B69B610A3A1757003C02F2 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; -/* End XCConfigurationList section */ - }; - rootObject = E4B69B4C0A3A1720003C02F2 /* Project object */; -} diff --git a/motion-visualization/MotionVisualization.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/motion-visualization/MotionVisualization.xcodeproj/project.xcworkspace/contents.xcworkspacedata deleted file mode 100644 index d589ac3..0000000 --- a/motion-visualization/MotionVisualization.xcodeproj/project.xcworkspace/contents.xcworkspacedata +++ /dev/null @@ -1,7 +0,0 @@ - - - - - diff --git a/motion-visualization/Project.xcconfig b/motion-visualization/Project.xcconfig index c10b9e5..7c338e1 100644 --- a/motion-visualization/Project.xcconfig +++ b/motion-visualization/Project.xcconfig @@ -1,9 +1,88 @@ //THE PATH TO THE ROOT OF OUR OF PATH RELATIVE TO THIS PROJECT. //THIS NEEDS TO BE DEFINED BEFORE CoreOF.xcconfig IS INCLUDED -OF_PATH = ../../.. +OF_PATH = ../../../.. //THIS HAS ALL THE HEADER AND LIBS FOR OF CORE -#include "../../../libs/openFrameworksCompiled/project/osx/CoreOF.xcconfig" +#include "../../../../libs/openFrameworksCompiled/project/osx/CoreOF.xcconfig" -OTHER_LDFLAGS = $(OF_CORE_LIBS) +//UNCOMMENT BELOW TO ENABLE C++ 17 and std::filesystem +CLANG_CXX_LANGUAGE_STANDARD = c++23 +CLANG_C_LANGUAGE_STANDARD = c17 +MACOSX_DEPLOYMENT_TARGET = 11.5 + +// App Settings +PRODUCT_NAME = $(TARGET_NAME) +PRODUCT_NAME[config=Debug] = $(TARGET_NAME)Debug +PRODUCT_BUNDLE_IDENTIFIER = cc.openFrameworks.${TARGET_NAME:rfc1034identifier} +//PRODUCT_BUNDLE_IDENTIFIER[config=Debug] = cc.openFrameworks.$(TARGET_NAME)Debug +DEVELOPMENT_LANGUAGE = English +CODE_SIGN_IDENTITY = - +INFOPLIST_FILE = openFrameworks-Info.plist +GENERATE_INFOPLIST_FILE = YES + +// set application category to games, this is required to enable Game mode +// note: this sets the initial value in the Xcode UI +INFOPLIST_KEY_LSApplicationCategoryType = public.app-category.games + +// VERSIONING - overridden if changed in Xcode UI + +// this is "Version" in the Xcode target Identity UI +// suggested to use semantic versioning format ala #.#.# +MARKETING_VERSION = 0.1.0 + +// If users upgrade project to recommended settings it enables script sandboxing which breaks our post build script +ENABLE_USER_SCRIPT_SANDBOXING=NO + +// this is "Build" in the Xcode target Identity UI, an incremental build number +// important for the App Store as new build submissions need a diff number even +// if MARKETING_VERSION is the same +CURRENT_PROJECT_VERSION = 1 + +// ICONS + +// default oF app icon +ICON_NAME = of.icns +ICON_NAME[config=Debug] = of_debug.icns +ICON_FILE = $(OF_PATH)/libs/openFrameworksCompiled/project/osx/$(ICON_NAME) + +// custom app icon, placed in main project folder +//ICON_NAME = MyApp.icns +//ICON_FILE = $(ICON_NAME) + +// custom app icon with separate Release and Debug versions placed in bin/data +//ICON_NAME = icon.icns +//ICON_NAME[config=Debug] = icon-debug.icns +//ICON_FILE = bin/data/$(ICON_NAME) + +// note: oF 0.7.2 - 0.11 used ICON_FILE_PATH which is no longer used in oF 0.12+ +// ex. change ICON_FILE_PATH = bin/data/ -> ICON_FILE = bin/data/$(ICON_NAME) & +// in a custom openFrameworks-Info.plist, set CFBundleIconFile to ICON_NAME + +//APPSTORE, uncomment next lines to bundle data folder and code sign +//OF_CODESIGN = 1 +//OF_BUNDLE_DATA_FOLDER = 1 +//OF_BUNDLE_DYLIBS = 1 + +HIGH_RESOLUTION_CAPABLE = NO + +// Optional include to keep any permanent settings as CODE_SIGN_IDENTITY. +#include? "App.xcconfig" + +//FOR AV ENGINE SOUND PLAYER UNCOMMENT THREE LINES BELOW +OF_NO_FMOD=1 +USER_PREPROCESSOR_DEFINITIONS="OF_NO_FMOD=1" +LIB_FMOD="" +GCC_PREPROCESSOR_DEFINITIONS=$(inherited) $(USER_PREPROCESSOR_DEFINITIONS) + +OTHER_CFLAGS = $(OF_CORE_CFLAGS) +OTHER_LDFLAGS = $(OF_CORE_LIBS) $(OF_CORE_FRAMEWORKS) HEADER_SEARCH_PATHS = $(OF_CORE_HEADERS) + +//THIS MAKES SURE THE APP BUILDS INSIDE THE BIN FOLDER +//If you comment this line out the app will be run from DerrivedData and your data/ files won't be accessible unless you uncomment OF_BUNDLE_DATA_FOLDER = 1 above +CONFIGURATION_BUILD_DIR = ${SRCROOT}/bin + +//OF_CORE_BUILD_COMMAND = echo \"💾 Compiling openFrameworks\"\nxcodebuild -project \"$OF_PATH/libs/openFrameworksCompiled/project/osx/openFrameworksLib.xcodeproj\" -target openFrameworks -configuration \"${CONFIGURATION}\" CLANG_CXX_LANGUAGE_STANDARD=$CLANG_CXX_LANGUAGE_STANDARD MACOSX_DEPLOYMENT_TARGET=$MACOSX_DEPLOYMENT_TARGET GCC_PREPROCESSOR_DEFINITIONS='$USER_PREPROCESSOR_DEFINITIONS' + + +OF_CORE_BUILD_COMMAND = xcodebuild -project $OF_PATH/libs/openFrameworksCompiled/project/osx/openFrameworksLib.xcodeproj -target openFrameworks -configuration ${CONFIGURATION} CLANG_CXX_LANGUAGE_STANDARD=$CLANG_CXX_LANGUAGE_STANDARD MACOSX_DEPLOYMENT_TARGET=$MACOSX_DEPLOYMENT_TARGET GCC_PREPROCESSOR_DEFINITIONS=$USER_PREPROCESSOR_DEFINITIONS diff --git a/motion-visualization/README.md b/motion-visualization/README.md index 9532f6c..22091da 100644 --- a/motion-visualization/README.md +++ b/motion-visualization/README.md @@ -2,3 +2,5 @@ [Atsushi Tadokoro](http://yoppa.org/) +See the [root setup guide](../README.md) for openFrameworks 0.12.1 build, +audio, and motion-data instructions. diff --git a/motion-visualization/addons.make b/motion-visualization/addons.make new file mode 100644 index 0000000..bec539d --- /dev/null +++ b/motion-visualization/addons.make @@ -0,0 +1 @@ +../ofxBvh diff --git a/motion-visualization/config.make b/motion-visualization/config.make new file mode 100644 index 0000000..c3593ae --- /dev/null +++ b/motion-visualization/config.make @@ -0,0 +1,3 @@ +# This suite is designed to live at apps/myApps/example-openFrameworks. +# Override from any location with: make OF_ROOT=/path/to/openFrameworks +OF_ROOT ?= ../../../.. diff --git a/motion-visualization/motion-visualization.xcodeproj/project.pbxproj b/motion-visualization/motion-visualization.xcodeproj/project.pbxproj new file mode 100644 index 0000000..fbbd96f --- /dev/null +++ b/motion-visualization/motion-visualization.xcodeproj/project.pbxproj @@ -0,0 +1,358 @@ +{ + "_OFProjectGeneratorVersion": "0.103.0", + "archiveVersion": "1", + "classes": {}, + "objectVersion": "54", + "objects": { + "168DBF15-D605-49CF-9070-91849062AA57": { + "children": [ + "5B61A5CB-A6F9-4684-B379-D54E378EBE95", + "2041EAFE-CAB2-42A9-965F-92A29099699D" + ], + "isa": "PBXGroup", + "name": "src", + "path": "src", + "sourceTree": "" + }, + "191CD6FA2847E21E0085CBB6": { + "fileEncoding": "4", + "isa": "PBXFileReference", + "lastKnownFileType": "text.plist.entitlements", + "path": "of.entitlements", + "sourceTree": "" + }, + "191EF70929D778A400F35F26": { + "isa": "PBXFileReference", + "lastKnownFileType": "folder", + "name": "openFrameworks", + "path": "../../../../libs/openFrameworks", + "sourceTree": "SOURCE_ROOT" + }, + "19B789C429E5AB4A0082E9B8": { + "alwaysOutOfDate": "1", + "buildActionMask": "2147483647", + "files": [], + "inputFileListPaths": [], + "inputPaths": [], + "isa": "PBXShellScriptBuildPhase", + "outputFileListPaths": [], + "outputPaths": [], + "runOnlyForDeploymentPostprocessing": "0", + "shellPath": "/bin/sh", + "shellScript": "\"$OF_PATH/scripts/osx/xcode_project.sh\"\n", + "showEnvVarsInLog": "0" + }, + "2041EAFE-CAB2-42A9-965F-92A29099699D": { + "fileEncoding": "4", + "isa": "PBXFileReference", + "lastKnownFileType": "sourcecode.cpp.h", + "name": "ofxBvh.h", + "path": "../ofxBvh/src/ofxBvh.h", + "sourceTree": "SOURCE_ROOT" + }, + "5B61A5CB-A6F9-4684-B379-D54E378EBE95": { + "fileEncoding": "4", + "isa": "PBXFileReference", + "lastKnownFileType": "sourcecode.cpp.cpp", + "name": "ofxBvh.cpp", + "path": "../ofxBvh/src/ofxBvh.cpp", + "sourceTree": "SOURCE_ROOT" + }, + "6266E90C-28D1-4114-B88F-068BB7ECC2AE": { + "children": [ + "168DBF15-D605-49CF-9070-91849062AA57" + ], + "isa": "PBXGroup", + "name": "ofxBvh", + "path": "../ofxBvh", + "sourceTree": "SOURCE_ROOT" + }, + "8664722D-76F1-4D94-9CF7-A18EB694CD35": { + "fileEncoding": "4", + "isa": "PBXFileReference", + "lastKnownFileType": "sourcecode.cpp.h", + "name": "testApp.h", + "sourceTree": "" + }, + "A275555F-3A37-4876-8C1F-33BE548EB6DC": { + "children": [ + "6266E90C-28D1-4114-B88F-068BB7ECC2AE" + ], + "isa": "PBXGroup", + "name": "local_addons", + "path": "", + "sourceTree": "SOURCE_ROOT" + }, + "B021A99F-F723-4001-9420-A19EE863A3E6": { + "fileRef": "5B61A5CB-A6F9-4684-B379-D54E378EBE95", + "isa": "PBXBuildFile" + }, + "BB4B014C10F69532006C3DED": { + "children": [], + "isa": "PBXGroup", + "name": "addons", + "path": "../../../../addons", + "sourceTree": "SOURCE_ROOT" + }, + "D928BDEC-689C-42BB-9BC9-C1E2FAD94C44": { + "fileEncoding": "4", + "isa": "PBXFileReference", + "lastKnownFileType": "folder", + "name": "data", + "path": "bin/data", + "sourceTree": "SOURCE_ROOT" + }, + "E42962A92163ECCD00A6A9E2": { + "alwaysOutOfDate": "1", + "buildActionMask": "2147483647", + "files": [], + "inputPaths": [], + "isa": "PBXShellScriptBuildPhase", + "name": "Run Script — Compile OF", + "outputPaths": [], + "runOnlyForDeploymentPostprocessing": "0", + "shellPath": "/bin/sh", + "shellScript": "$OF_CORE_BUILD_COMMAND\n", + "showEnvVarsInLog": "0" + }, + "E4A5B60F29BAAAE400C2D356": { + "buildActionMask": "2147483647", + "dstPath": "", + "dstSubfolderSpec": "6", + "files": [], + "isa": "PBXCopyFilesBuildPhase", + "runOnlyForDeploymentPostprocessing": "0" + }, + "E4B69B4A0A3A1720003C02F2": { + "children": [ + "191CD6FA2847E21E0085CBB6", + "E4B6FCAD0C3E899E008CF71C", + "E4EB6923138AFD0F00A09F29", + "E4B69E1C0A3A1BDC003C02F2", + "191EF70929D778A400F35F26", + "BB4B014C10F69532006C3DED", + "E4B69B5B0A3A1756003C02F2", + "A275555F-3A37-4876-8C1F-33BE548EB6DC", + "D928BDEC-689C-42BB-9BC9-C1E2FAD94C44" + ], + "isa": "PBXGroup", + "sourceTree": "" + }, + "E4B69B4C0A3A1720003C02F2": { + "attributes": { + "BuildIndependentTargetsInParallel": "YES", + "LastUpgradeCheck": "1540" + }, + "buildConfigurationList": "E4B69B4D0A3A1720003C02F2", + "compatibilityVersion": "Xcode 3.2", + "developmentRegion": "en", + "hasScannedForEncodings": "0", + "isa": "PBXProject", + "knownRegions": [ + "en", + "Base" + ], + "mainGroup": "E4B69B4A0A3A1720003C02F2", + "productRefGroup": "E4B69B4A0A3A1720003C02F2", + "projectDirPath": "", + "projectRoot": "", + "targets": [ + "E4B69B5A0A3A1756003C02F2" + ] + }, + "E4B69B4D0A3A1720003C02F2": { + "buildConfigurations": [ + "E4B69B4E0A3A1720003C02F2", + "E4B69B4F0A3A1720003C02F2" + ], + "defaultConfigurationIsVisible": "0", + "defaultConfigurationName": "Release", + "isa": "XCConfigurationList" + }, + "E4B69B4E0A3A1720003C02F2": { + "baseConfigurationReference": "E4EB6923138AFD0F00A09F29", + "buildSettings": { + "CODE_SIGN_ENTITLEMENTS": "of.entitlements", + "COPY_PHASE_STRIP": "NO", + "ENABLE_TESTABILITY": "YES", + "GCC_OPTIMIZATION_LEVEL": "0", + "GCC_WARN_UNUSED_VARIABLE": "NO", + "HEADER_SEARCH_PATHS": [ + "$(OF_CORE_HEADERS)", + "src" + ], + "OTHER_CPLUSPLUSFLAGS": "-D__MACOSX_CORE__" + }, + "isa": "XCBuildConfiguration", + "name": "Debug" + }, + "E4B69B4F0A3A1720003C02F2": { + "baseConfigurationReference": "E4EB6923138AFD0F00A09F29", + "buildSettings": { + "CODE_SIGN_ENTITLEMENTS": "of.entitlements", + "COPY_PHASE_STRIP": "YES", + "GCC_OPTIMIZATION_LEVEL": "3", + "GCC_UNROLL_LOOPS": "YES", + "HEADER_SEARCH_PATHS": [ + "$(OF_CORE_HEADERS)", + "src" + ], + "OTHER_CPLUSPLUSFLAGS": "-D__MACOSX_CORE__" + }, + "isa": "XCBuildConfiguration", + "name": "Release" + }, + "E4B69B580A3A1756003C02F2": { + "buildActionMask": "2147483647", + "files": [ + "E4B69E200A3A1BDC003C02F2", + "F77F8C76-5ABD-4EC6-9124-D6447EDF405A", + "B021A99F-F723-4001-9420-A19EE863A3E6" + ], + "isa": "PBXSourcesBuildPhase", + "runOnlyForDeploymentPostprocessing": "0" + }, + "E4B69B590A3A1756003C02F2": { + "buildActionMask": "2147483647", + "files": [], + "isa": "PBXFrameworksBuildPhase", + "runOnlyForDeploymentPostprocessing": "0" + }, + "E4B69B5A0A3A1756003C02F2": { + "buildConfigurationList": "E4B69B5F0A3A1757003C02F2", + "buildPhases": [ + "E42962A92163ECCD00A6A9E2", + "E4B69B580A3A1756003C02F2", + "E4B69B590A3A1756003C02F2", + "E4C2427710CC5ABF004149E2", + "E4A5B60F29BAAAE400C2D356", + "19B789C429E5AB4A0082E9B8" + ], + "buildRules": [], + "dependencies": [], + "isa": "PBXNativeTarget", + "name": "motion-visualization", + "productName": "myOFApp", + "productReference": "E4B69B5B0A3A1756003C02F2", + "productType": "com.apple.product-type.application" + }, + "E4B69B5B0A3A1756003C02F2": { + "explicitFileType": "wrapper.application", + "includeInIndex": "0", + "isa": "PBXFileReference", + "path": "motion-visualizationDebug.app", + "sourceTree": "BUILT_PRODUCTS_DIR" + }, + "E4B69B5F0A3A1757003C02F2": { + "buildConfigurations": [ + "E4B69B600A3A1757003C02F2", + "E4B69B610A3A1757003C02F2" + ], + "defaultConfigurationIsVisible": "0", + "defaultConfigurationName": "Release", + "isa": "XCConfigurationList" + }, + "E4B69B600A3A1757003C02F2": { + "baseConfigurationReference": "E4EB6923138AFD0F00A09F29", + "buildSettings": { + "ARCHS": "$(ARCHS_STANDARD)", + "COPY_PHASE_STRIP": "NO", + "FRAMEWORK_SEARCH_PATHS": "$(inherited)", + "GCC_DYNAMIC_NO_PIC": "NO", + "HEADER_SEARCH_PATHS": [ + "$(OF_CORE_HEADERS)", + "src", + "src", + "../ofxBvh/src" + ], + "LIBRARY_SEARCH_PATHS": "$(inherited)", + "OTHER_LDFLAGS": [ + "$(OF_CORE_LIBS)", + "$(OF_CORE_FRAMEWORKS)", + "$(LIB_OF_DEBUG)" + ] + }, + "isa": "XCBuildConfiguration", + "name": "Debug" + }, + "E4B69B610A3A1757003C02F2": { + "baseConfigurationReference": "E4EB6923138AFD0F00A09F29", + "buildSettings": { + "ARCHS": "$(ARCHS_STANDARD)", + "COPY_PHASE_STRIP": "YES", + "FRAMEWORK_SEARCH_PATHS": "$(inherited)", + "HEADER_SEARCH_PATHS": [ + "$(OF_CORE_HEADERS)", + "src", + "src", + "../ofxBvh/src" + ], + "LIBRARY_SEARCH_PATHS": "$(inherited)", + "OTHER_LDFLAGS": [ + "$(OF_CORE_LIBS)", + "$(OF_CORE_FRAMEWORKS)", + "$(LIB_OF_RELEASE)" + ], + "baseConfigurationReference": "E4EB6923138AFD0F00A09F29" + }, + "isa": "XCBuildConfiguration", + "name": "Release" + }, + "E4B69E1C0A3A1BDC003C02F2": { + "children": [ + "E4B69E1D0A3A1BDC003C02F2", + "EFADDB8F-4607-46CB-8CB2-A037A1558725", + "8664722D-76F1-4D94-9CF7-A18EB694CD35" + ], + "isa": "PBXGroup", + "path": "src", + "sourceTree": "SOURCE_ROOT" + }, + "E4B69E1D0A3A1BDC003C02F2": { + "fileEncoding": "4", + "isa": "PBXFileReference", + "lastKnownFileType": "sourcecode.cpp.cpp", + "name": "main.cpp", + "path": "src/main.cpp", + "sourceTree": "SOURCE_ROOT" + }, + "E4B69E200A3A1BDC003C02F2": { + "fileRef": "E4B69E1D0A3A1BDC003C02F2", + "isa": "PBXBuildFile" + }, + "E4B6FCAD0C3E899E008CF71C": { + "fileEncoding": "4", + "isa": "PBXFileReference", + "lastKnownFileType": "text.plist.xml", + "path": "openFrameworks-Info.plist", + "sourceTree": "" + }, + "E4C2427710CC5ABF004149E2": { + "buildActionMask": "2147483647", + "dstPath": "", + "dstSubfolderSpec": "10", + "files": [], + "isa": "PBXCopyFilesBuildPhase", + "runOnlyForDeploymentPostprocessing": "0" + }, + "E4EB6923138AFD0F00A09F29": { + "fileEncoding": "4", + "isa": "PBXFileReference", + "lastKnownFileType": "text.xcconfig", + "path": "Project.xcconfig", + "sourceTree": "" + }, + "EFADDB8F-4607-46CB-8CB2-A037A1558725": { + "fileEncoding": "4", + "isa": "PBXFileReference", + "lastKnownFileType": "sourcecode.cpp.cpp", + "name": "testApp.cpp", + "sourceTree": "" + }, + "F77F8C76-5ABD-4EC6-9124-D6447EDF405A": { + "fileRef": "EFADDB8F-4607-46CB-8CB2-A037A1558725", + "isa": "PBXBuildFile" + } + }, + "rootObject": "E4B69B4C0A3A1720003C02F2" +} diff --git a/motion-visualization/motion-visualization.xcodeproj/xcshareddata/xcschemes/motion-visualization Debug.xcscheme b/motion-visualization/motion-visualization.xcodeproj/xcshareddata/xcschemes/motion-visualization Debug.xcscheme new file mode 100644 index 0000000..b7079db --- /dev/null +++ b/motion-visualization/motion-visualization.xcodeproj/xcshareddata/xcschemes/motion-visualization Debug.xcscheme @@ -0,0 +1,104 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/motion-visualization/motion-visualization.xcodeproj/xcshareddata/xcschemes/motion-visualization Release.xcscheme b/motion-visualization/motion-visualization.xcodeproj/xcshareddata/xcschemes/motion-visualization Release.xcscheme new file mode 100644 index 0000000..8ee781b --- /dev/null +++ b/motion-visualization/motion-visualization.xcodeproj/xcshareddata/xcschemes/motion-visualization Release.xcscheme @@ -0,0 +1,104 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/motion-visualization/of.entitlements b/motion-visualization/of.entitlements new file mode 100644 index 0000000..f4fc128 --- /dev/null +++ b/motion-visualization/of.entitlements @@ -0,0 +1,24 @@ + + + + + com.apple.security.app-sandbox + + com.apple.security.device.audio-input + + com.apple.security.device.bluetooth + + com.apple.security.device.camera + + com.apple.security.device.usb + + com.apple.security.files.user-selected.read-write + + com.apple.security.network.client + + com.apple.security.network.server + + com.apple.security.print + + + diff --git a/motion-visualization/src/main.cpp b/motion-visualization/src/main.cpp index 6667df2..3e1e85a 100644 --- a/motion-visualization/src/main.cpp +++ b/motion-visualization/src/main.cpp @@ -1,16 +1,14 @@ #include "ofMain.h" #include "testApp.h" -#include "ofAppGlutWindow.h" //======================================================================== -int main( ){ - - ofAppGlutWindow window; - ofSetupOpenGL(&window, 1280,720, OF_WINDOW); // <-------- setup the GL context - - // this kicks off the running of my app - // can be OF_WINDOW or OF_FULLSCREEN - // pass in width and height too: - ofRunApp( new testApp()); - +int main() { + ofGLWindowSettings settings; + settings.setSize(1280, 720); + settings.setGLVersion(2, 1); + settings.windowMode = OF_WINDOW; + + auto window = ofCreateWindow(settings); + ofRunApp(window, std::make_shared()); + ofRunMainLoop(); } diff --git a/motion-visualization/src/testApp.cpp b/motion-visualization/src/testApp.cpp index 9d4c24d..bb79afe 100644 --- a/motion-visualization/src/testApp.cpp +++ b/motion-visualization/src/testApp.cpp @@ -1,5 +1,35 @@ #include "testApp.h" +#include + +namespace { + +const std::array kPerfumeMotionFiles = { + "bvhfiles/aachan.bvh", + "bvhfiles/kashiyuka.bvh", + "bvhfiles/nocchi.bvh" +}; + +const std::array kBundledMotionFiles = { + "../../../example-bvh/bin/data/A_test.bvh", + "../../../example-bvh/bin/data/B_test.bvh", + "../../../example-bvh/bin/data/C_test.bvh" +}; + +bool loadMotionFiles(std::array& motions) { + bool loaded = true; + for (size_t i = 0; i < motions.size(); ++i) { + if (!motions[i].load(kPerfumeMotionFiles[i])) { + ofLogWarning("motion-visualization") + << "Using bundled motion fallback for " << kPerfumeMotionFiles[i]; + loaded = motions[i].load(kBundledMotionFiles[i]) && loaded; + } + } + return loaded; +} + +} // namespace + int trackerLength = 200; float startTime = 0.035; @@ -7,9 +37,9 @@ class Tracker { public: - const ofxBvhJoint *joint; + const ofxBvhJoint *joint = nullptr; deque points; - float trackerLength; + float trackerLength = 0.0f; void setup(const ofxBvhJoint *o){ joint = o; @@ -18,7 +48,7 @@ class Tracker void update() { const ofVec3f &p = joint->getPosition(); - if (p.distance(points.front()) > 1) + if (points.empty() || p.distance(points.front()) > 1) points.push_front(joint->getPosition()); if (points.size() > trackerLength){ @@ -28,10 +58,8 @@ class Tracker void draw() { if (points.empty()) return; - - for (int i = 0; i < points.size() - 1; i++){ - float a = ofMap(i, 0, points.size() - 1, 1, 0); - + + for (size_t i = 0; i + 1 < points.size(); ++i){ ofVec3f &p0 = points[i]; ofVec3f &p1 = points[i + 1]; @@ -40,7 +68,7 @@ class Tracker if (dist < 40) { ofSetLineWidth(ofMap(dist, 0, 30, 0, 14)); ofSetColor(dist*20, 127-dist*10, 255-dist*20); - ofLine(p0.x, p0.y, p0.z, p1.x, p1.y, p1.z); + ofDrawLine(p0.x, p0.y, p0.z, p1.x, p1.y, p1.z); } } } @@ -54,7 +82,7 @@ class Tracker } }; -vector trackers; +vector> trackers; //-------------------------------------------------------------- void testApp::setup() { @@ -63,30 +91,28 @@ void testApp::setup() { rotate = 0; - // setup bvh - bvh[0].load("bvhfiles/kashiyuka.bvh"); - bvh[1].load("bvhfiles/nocchi.bvh"); - bvh[2].load("bvhfiles/aachan.bvh"); + assetsReady = loadMotionFiles(bvh); - for (int i = 0; i < 3; i++) { - bvh[i].play(); + audioReady = ofFile::doesFileExist("Perfume_globalsite_sound.wav") + && track.load("Perfume_globalsite_sound.wav"); + if (audioReady) { + track.setLoop(true); + track.play(); + } else { + ofLogNotice("motion-visualization") + << "Audio file not found; using a silent internal clock."; } - track.loadSound("Perfume_globalsite_sound.wav"); - track.play(); - track.setLoop(true); - // setup tracker - for (int i = 0; i < 3; i++) + if (assetsReady) { - ofxBvh &b = bvh[i]; - - for (int n = 0; n < b.getNumJoints(); n++) { - const ofxBvhJoint *o = b.getJoint(n); - Tracker *t = new Tracker; - t->setup(o); - t->setTrackerLength(trackerLength); - trackers.push_back(t); + for (auto& motion : bvh) { + for (int n = 0; n < motion.getNumJoints(); ++n) { + auto tracker = std::make_unique(); + tracker->setup(motion.getJoint(n)); + tracker->setTrackerLength(trackerLength); + trackers.push_back(std::move(tracker)); + } } } @@ -94,7 +120,7 @@ void testApp::setup() { camera.setDistance(360); camera.disableMouseInput(); - background.loadImage("background.png"); + background.load("background.png"); } @@ -103,18 +129,22 @@ void testApp::update() { rotate += 0.04; - float t = (track.getPosition() * 64.28); - t = t / bvh[0].getDuration(); + if (!assetsReady) return; + const float motionDuration = bvh[0].getDuration(); + const float motionSeconds = audioReady + ? track.getPosition() * track.getDuration() + : std::fmod(ofGetElapsedTimef(), motionDuration); + const float t = ofClamp(motionSeconds / motionDuration, 0.0f, 1.0f); - for (int i = 0; i < 3; i++) { - bvh[i].setPosition(t); - bvh[i].update(); + for (auto& motion : bvh) { + motion.setPosition(t); + motion.update(); } - for (int i = 0; i < trackers.size(); i++) { + for (auto& tracker : trackers) { if (t > startTime) { - trackers[i]->setTrackerLength(trackerLength); - trackers[i]->update(); + tracker->setTrackerLength(trackerLength); + tracker->update(); } } } @@ -125,27 +155,34 @@ void testApp::draw(){ ofSetHexColor(0xffffff); background.draw(0,0,ofGetWidth(),ofGetHeight()); - glEnable(GL_DEPTH_TEST); + ofEnableDepthTest(); camera.begin(); ofPushMatrix(); { ofTranslate(0, -80); - ofRotate(rotate, 0, 1, 0); + ofRotateDeg(rotate, 0, 1, 0); ofScale(1, 1, 1); // draw tracker - glDisable(GL_DEPTH_TEST); + ofDisableDepthTest(); ofEnableBlendMode(OF_BLENDMODE_ADD); //ofSetColor(ofColor::white, 80); - for (int i = 0; i < trackers.size(); i++){ - trackers[i]->draw(); + for (auto& tracker : trackers){ + tracker->draw(); } } ofPopMatrix(); camera.end(); + ofDisableDepthTest(); + ofSetColor(255); + + if (!assetsReady) + ofDrawBitmapString("Motion data is missing. See README.md.", 10, 20); + else if (!audioReady) + ofDrawBitmapString("Audio data is missing; running with a silent clock.", 10, 20); } diff --git a/motion-visualization/src/testApp.h b/motion-visualization/src/testApp.h index 8b80db5..7108383 100644 --- a/motion-visualization/src/testApp.h +++ b/motion-visualization/src/testApp.h @@ -3,30 +3,35 @@ #include "ofMain.h" #include "ofxBvh.h" -class testApp : public ofBaseApp{ +#include + +class testApp : public ofBaseApp { public: - void setup(); - void update(); - void draw(); - void exit(); + void setup() override; + void update() override; + void draw() override; + void exit() override; - void keyPressed (int key); - void keyReleased(int key); - void mouseMoved(int x, int y ); - void mouseDragged(int x, int y, int button); - void mousePressed(int x, int y, int button); - void mouseReleased(int x, int y, int button); - void windowResized(int w, int h); - void dragEvent(ofDragInfo dragInfo); - void gotMessage(ofMessage msg); + void keyPressed(int key) override; + void keyReleased(int key) override; + void mouseMoved(int x, int y) override; + void mouseDragged(int x, int y, int button) override; + void mousePressed(int x, int y, int button) override; + void mouseReleased(int x, int y, int button) override; + void windowResized(int w, int h) override; + void dragEvent(ofDragInfo dragInfo) override; + void gotMessage(ofMessage msg) override; ofSoundPlayer track; - ofxBvh bvh[3]; + std::array bvh; - float rotate; - float play_rate, play_rate_t; + float rotate = 0.0f; + float play_rate = 1.0f; + float play_rate_t = 1.0f; ofEasyCam camera; ofImage background; + bool assetsReady = false; + bool audioReady = false; }; diff --git a/ofxBvh/LICENSE b/ofxBvh/LICENSE index 1724108..56e2ae4 100644 --- a/ofxBvh/LICENSE +++ b/ofxBvh/LICENSE @@ -1,4 +1,6 @@ -Copyright (c) 2012 Perfume Dev Team +Copyright (c) 2012 Daito Manabe + +Originally published under the Perfume Dev Team name. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the diff --git a/ofxBvh/src/ofxBvh.cpp b/ofxBvh/src/ofxBvh.cpp index f999869..385b96d 100644 --- a/ofxBvh/src/ofxBvh.cpp +++ b/ofxBvh/src/ofxBvh.cpp @@ -1,47 +1,135 @@ #include "ofxBvh.h" +#include +#include +#include +#include + static inline void billboard(); +namespace { + +bool parseFloatToken(const string& token, float& value) +{ + if (token.empty()) return false; + + char* end = nullptr; + errno = 0; + value = std::strtof(token.c_str(), &end); + return errno != ERANGE && end == token.c_str() + token.size() && std::isfinite(value); +} + +bool parseIntToken(const string& token, int& value) +{ + if (token.empty()) return false; + + char* end = nullptr; + errno = 0; + const long parsed = std::strtol(token.c_str(), &end, 10); + if (errno == ERANGE || end != token.c_str() + token.size() + || parsed < std::numeric_limits::min() + || parsed > std::numeric_limits::max()) + { + return false; + } + + value = static_cast(parsed); + return true; +} + +bool valueForHeader(const string& line, const string& expectedKey, string& value) +{ + const size_t colon = line.find(':'); + if (colon == string::npos || ofTrim(line.substr(0, colon)) != expectedKey) return false; + value = ofTrim(line.substr(colon + 1)); + return !value.empty(); +} + +size_t findSectionLine(const string& data, const string& section, size_t offset = 0) +{ + size_t lineStart = offset; + while (lineStart < data.size()) + { + const size_t lineEnd = data.find('\n', lineStart); + const size_t length = lineEnd == string::npos + ? data.size() - lineStart + : lineEnd - lineStart; + if (ofTrim(data.substr(lineStart, length)) == section) return lineStart; + if (lineEnd == string::npos) break; + lineStart = lineEnd + 1; + } + return string::npos; +} + +} // namespace + ofxBvh::~ofxBvh() { unload(); } -void ofxBvh::load(string path) +bool ofxBvh::load(const of::filesystem::path& path) { - path = ofToDataPath(path); + unload(); + const auto dataPath = ofToDataPathFS(path, true); + const string data = ofBufferFromFile(dataPath).getText(); - string data = ofBufferFromFile(path).getText(); + if (data.empty()) + { + ofLogError("ofxBvh") << "could not read " << dataPath; + return false; + } - const size_t HIERARCHY_BEGIN = data.find("HIERARCHY", 0); - const size_t MOTION_BEGIN = data.find("MOTION", 0); + const size_t HIERARCHY_BEGIN = findSectionLine(data, "HIERARCHY"); + const size_t MOTION_BEGIN = findSectionLine(data, "MOTION", + HIERARCHY_BEGIN == string::npos ? 0 : HIERARCHY_BEGIN); if (HIERARCHY_BEGIN == string::npos - || MOTION_BEGIN == string::npos) + || MOTION_BEGIN == string::npos + || HIERARCHY_BEGIN >= MOTION_BEGIN) { - ofLogError("ofxBvh", "invalid bvh format"); - return; + ofLogError("ofxBvh") << "invalid BVH format in " << dataPath; + return false; } - parseHierarchy(data.substr(HIERARCHY_BEGIN, MOTION_BEGIN)); - parseMotion(data.substr(MOTION_BEGIN)); + if (!parseHierarchy(data.substr(HIERARCHY_BEGIN, MOTION_BEGIN - HIERARCHY_BEGIN)) + || !parseMotion(data.substr(MOTION_BEGIN))) + { + ofLogError("ofxBvh") << "could not parse " << dataPath; + unload(); + return false; + } - currentFrame = frames[0]; + if (!root || frames.empty() || frame_time <= 0.0f) + { + ofLogError("ofxBvh") << "incomplete BVH data in " << dataPath; + unload(); + return false; + } + + currentFrame = frames.front(); - int index = 0; - updateJoint(index, currentFrame, root); + size_t index = 0; + if (!updateJoint(index, currentFrame, root) || index != currentFrame.size()) + { + ofLogError("ofxBvh") << "invalid channel data in " << dataPath; + unload(); + return false; + } frame_new = false; + return true; } void ofxBvh::unload() { - for (int i = 0; i < joints.size(); i++) - delete joints[i]; + for (ofxBvhJoint* joint : joints) + delete joint; joints.clear(); + jointMap.clear(); - root = NULL; + root = nullptr; frames.clear(); currentFrame.clear(); @@ -55,6 +143,7 @@ void ofxBvh::unload() loop = false; need_update = false; + frame_new = false; } void ofxBvh::play() @@ -67,7 +156,7 @@ void ofxBvh::stop() playing = false; } -bool ofxBvh::isPlaying() +bool ofxBvh::isPlaying() const { return playing; } @@ -77,35 +166,37 @@ void ofxBvh::setLoop(bool yn) loop = yn; } -bool ofxBvh::isLoop() { return loop; } +bool ofxBvh::isLoop() const { return loop; } void ofxBvh::setRate(float rate) { - this->rate = rate; + this->rate = std::isfinite(rate) ? rate : 0.0f; } -void ofxBvh::updateJoint(int& index, const FrameData& frame_data, ofxBvhJoint *joint) +bool ofxBvh::updateJoint(size_t& index, const FrameData& frame_data, ofxBvhJoint *joint) { + if (!joint) return false; + ofVec3f translate; ofQuaternion rotate; - for (int i = 0; i < joint->channel_type.size(); i++) + for (const ofxBvhJoint::CHANNEL type : joint->channel_type) { - float v = frame_data[index++]; - ofxBvhJoint::CHANNEL t = joint->channel_type[i]; + if (index >= frame_data.size()) return false; + const float value = frame_data[index++]; - if (t == ofxBvhJoint::X_POSITION) - translate.x = v; - else if (t == ofxBvhJoint::Y_POSITION) - translate.y = v; - else if (t == ofxBvhJoint::Z_POSITION) - translate.z = v; - else if (t == ofxBvhJoint::X_ROTATION) - rotate = ofQuaternion(v, ofVec3f(1, 0, 0)) * rotate; - else if (t == ofxBvhJoint::Y_ROTATION) - rotate = ofQuaternion(v, ofVec3f(0, 1, 0)) * rotate; - else if (t == ofxBvhJoint::Z_ROTATION) - rotate = ofQuaternion(v, ofVec3f(0, 0, 1)) * rotate; + if (type == ofxBvhJoint::X_POSITION) + translate.x = value; + else if (type == ofxBvhJoint::Y_POSITION) + translate.y = value; + else if (type == ofxBvhJoint::Z_POSITION) + translate.z = value; + else if (type == ofxBvhJoint::X_ROTATION) + rotate = ofQuaternion(value, ofVec3f(1, 0, 0)) * rotate; + else if (type == ofxBvhJoint::Y_ROTATION) + rotate = ofQuaternion(value, ofVec3f(0, 1, 0)) * rotate; + else if (type == ofxBvhJoint::Z_ROTATION) + rotate = ofQuaternion(value, ofVec3f(0, 0, 1)) * rotate; } translate += joint->initial_offset; @@ -122,39 +213,56 @@ void ofxBvh::updateJoint(int& index, const FrameData& frame_data, ofxBvhJoint *j joint->global_matrix.postMult(joint->parent->global_matrix); } - for (int i = 0; i < joint->children.size(); i++) + for (ofxBvhJoint* child : joint->children) { - updateJoint(index, frame_data, joint->children[i]); + if (!updateJoint(index, frame_data, child)) return false; } + + return true; } void ofxBvh::update() +{ + update(ofGetLastFrameTime()); +} + +void ofxBvh::update(float deltaSeconds) { frame_new = false; + if (!isLoaded()) return; - if (playing && ofGetFrameNum() > 1) + if (playing && std::isfinite(deltaSeconds) && deltaSeconds > 0.0f) { - int last_index = getFrame(); - - play_head += ofGetLastFrameTime() * rate; - int index = getFrame(); + const int last_index = getFrame(); + const double duration = static_cast(getDuration()); + const double nextPlayHead = static_cast(play_head) + + static_cast(deltaSeconds) * static_cast(rate); + if (loop) + { + play_head = static_cast(std::fmod(nextPlayHead, duration)); + if (play_head < 0.0f) play_head += duration; + } + else if (nextPlayHead >= duration) + { + play_head = static_cast(duration) - frame_time; + playing = false; + } + else if (nextPlayHead < 0.0) + { + play_head = 0.0f; + playing = false; + } + else + { + play_head = static_cast(nextPlayHead); + } + + const int index = getFrame(); if (index != last_index) { need_update = true; - - currentFrame = frames[index]; - - if (index >= frames.size()) - { - if (loop) - play_head = 0; - else - playing = false; - } - - if (play_head < 0) - play_head = 0; + currentFrame = frames[static_cast(index)]; } } @@ -163,13 +271,19 @@ void ofxBvh::update() need_update = false; frame_new = true; - int index = 0; - updateJoint(index, currentFrame, root); + size_t index = 0; + if (!updateJoint(index, currentFrame, root) || index != currentFrame.size()) + { + ofLogError("ofxBvh") << "invalid channel data while updating"; + unload(); + } } } void ofxBvh::draw() { + if (!isLoaded()) return; + ofPushStyle(); ofFill(); @@ -183,13 +297,13 @@ void ofxBvh::draw() { ofSetColor(ofColor::yellow); billboard(); - ofCircle(0, 0, 6); + ofDrawCircle(0, 0, 6); } else if (o->getChildren().size() == 1) { ofSetColor(ofColor::white); billboard(); - ofCircle(0, 0, 2); + ofDrawCircle(0, 0, 2); } else if (o->getChildren().size() > 1) { @@ -199,7 +313,7 @@ void ofxBvh::draw() ofSetColor(ofColor::green); billboard(); - ofCircle(0, 0, 4); + ofDrawCircle(0, 0, 4); } glPopMatrix(); @@ -208,43 +322,55 @@ void ofxBvh::draw() ofPopStyle(); } -bool ofxBvh::isFrameNew() +bool ofxBvh::isFrameNew() const { return frame_new; } +bool ofxBvh::isLoaded() const +{ + return root && !frames.empty() && frame_time > 0.0f; +} + void ofxBvh::setFrame(int index) { - if (ofInRange(index, 0, frames.size()) && getFrame() != index) + if (index >= 0 && index < static_cast(frames.size()) && getFrame() != index) { - currentFrame = frames[index]; - play_head = (float)index * frame_time; + currentFrame = frames[static_cast(index)]; + play_head = static_cast(index) * frame_time; need_update = true; } } -int ofxBvh::getFrame() +int ofxBvh::getFrame() const { - return floor(play_head / frame_time); + if (!isLoaded() || !std::isfinite(play_head)) return 0; + return ofClamp(static_cast(std::floor(play_head / frame_time + 1e-4f)), + 0, static_cast(frames.size()) - 1); } void ofxBvh::setPosition(float pos) { - setFrame((float)frames.size() * pos); + if (!isLoaded() || !std::isfinite(pos)) return; + const float clamped = ofClamp(pos, 0.0f, 1.0f); + const int frame = clamped >= 1.0f + ? static_cast(frames.size()) - 1 + : static_cast(clamped * static_cast(frames.size())); + setFrame(frame); } -float ofxBvh::getPosition() +float ofxBvh::getPosition() const { - return play_head / (float)frames.size(); + return isLoaded() ? ofClamp(play_head / getDuration(), 0.0f, 1.0f) : 0.0f; } -float ofxBvh::getDuration() +float ofxBvh::getDuration() const { - return (float)frames.size() * frame_time; + return static_cast(frames.size()) * frame_time; } -void ofxBvh::parseHierarchy(const string& data) +bool ofxBvh::parseHierarchy(const string& data) { vector tokens; string token; @@ -253,11 +379,9 @@ void ofxBvh::parseHierarchy(const string& data) num_frames = 0; frame_time = 0; - for (int i = 0; i < data.size(); i++) + for (const char c : data) { - char c = data[i]; - - if (isspace(c)) + if (std::isspace(static_cast(c))) { if (!token.empty()) tokens.push_back(token); token.clear(); @@ -267,20 +391,40 @@ void ofxBvh::parseHierarchy(const string& data) token.push_back(c); } } + if (!token.empty()) tokens.push_back(token); - int index = 0; - while (index < tokens.size()) + if (tokens.size() < 3 || tokens[0] != "HIERARCHY" || tokens[1] != "ROOT") { - if (tokens[index++] == "ROOT") - { - root = parseJoint(index, tokens, NULL); - } + ofLogError("ofxBvh") << "hierarchy must begin with HIERARCHY ROOT"; + return false; } + + size_t index = 2; + root = parseJoint(index, tokens, nullptr); + if (!root) return false; + if (index != tokens.size()) + { + ofLogError("ofxBvh") << "unexpected data after ROOT joint"; + return false; + } + return total_channels > 0; } -ofxBvhJoint* ofxBvh::parseJoint(int& index, vector &tokens, ofxBvhJoint *parent) +ofxBvhJoint* ofxBvh::parseJoint(size_t& index, const vector& tokens, ofxBvhJoint *parent) { - string name = tokens[index++]; + if (index >= tokens.size()) + { + ofLogError("ofxBvh") << "joint name is missing"; + return nullptr; + } + + const string name = tokens[index++]; + if (index >= tokens.size() || tokens[index++] != "{") + { + ofLogError("ofxBvh") << "joint " << name << " has no opening brace"; + return nullptr; + } + ofxBvhJoint *joint = new ofxBvhJoint(name, parent); if (parent) parent->children.push_back(joint); @@ -289,148 +433,176 @@ ofxBvhJoint* ofxBvh::parseJoint(int& index, vector &tokens, ofxBvhJoint joints.push_back(joint); jointMap[name] = joint; + bool closed = false; while (index < tokens.size()) { - string token = tokens[index++]; + const string token = tokens[index++]; if (token == "OFFSET") { - joint->initial_offset.x = ofToFloat(tokens[index++]); - joint->initial_offset.y = ofToFloat(tokens[index++]); - joint->initial_offset.z = ofToFloat(tokens[index++]); + if (tokens.size() - index < 3 + || !parseFloatToken(tokens[index], joint->initial_offset.x) + || !parseFloatToken(tokens[index + 1], joint->initial_offset.y) + || !parseFloatToken(tokens[index + 2], joint->initial_offset.z)) + { + ofLogError("ofxBvh") << "invalid OFFSET for joint " << name; + return nullptr; + } + index += 3; joint->offset = joint->initial_offset; } else if (token == "CHANNELS") { - int num = ofToInt(tokens[index++]); + int num = 0; + if (index >= tokens.size() || !parseIntToken(tokens[index++], num) + || num < 0 || static_cast(num) > tokens.size() - index + || num > std::numeric_limits::max() - total_channels) + { + ofLogError("ofxBvh") << "invalid CHANNELS count for joint " << name; + return nullptr; + } - joint->channel_type.resize(num); + joint->channel_type.resize(static_cast(num)); total_channels += num; for (int i = 0; i < num; i++) { - string ch = tokens[index++]; - - char axis = tolower(ch[0]); - char elem = tolower(ch[1]); - - if (elem == 'p') - { - if (axis == 'x') - joint->channel_type[i] = ofxBvhJoint::X_POSITION; - else if (axis == 'y') - joint->channel_type[i] = ofxBvhJoint::Y_POSITION; - else if (axis == 'z') - joint->channel_type[i] = ofxBvhJoint::Z_POSITION; - else - { - ofLogError("ofxBvh", "invalid bvh format"); - return NULL; - } - } - else if (elem == 'r') - { - if (axis == 'x') - joint->channel_type[i] = ofxBvhJoint::X_ROTATION; - else if (axis == 'y') - joint->channel_type[i] = ofxBvhJoint::Y_ROTATION; - else if (axis == 'z') - joint->channel_type[i] = ofxBvhJoint::Z_ROTATION; - else - { - ofLogError("ofxBvh", "invalid bvh format"); - return NULL; - } - } + const string channel = ofToLower(tokens[index++]); + if (channel == "xposition") + joint->channel_type[i] = ofxBvhJoint::X_POSITION; + else if (channel == "yposition") + joint->channel_type[i] = ofxBvhJoint::Y_POSITION; + else if (channel == "zposition") + joint->channel_type[i] = ofxBvhJoint::Z_POSITION; + else if (channel == "xrotation") + joint->channel_type[i] = ofxBvhJoint::X_ROTATION; + else if (channel == "yrotation") + joint->channel_type[i] = ofxBvhJoint::Y_ROTATION; + else if (channel == "zrotation") + joint->channel_type[i] = ofxBvhJoint::Z_ROTATION; else { - ofLogError("ofxBvh", "invalid bvh format"); - return NULL; + ofLogError("ofxBvh") << "invalid channel name for joint " << name; + return nullptr; } } } else if (token == "JOINT" || token == "End") { - parseJoint(index, tokens, joint); + if (token == "End" && (index >= tokens.size() || tokens[index] != "Site")) + { + ofLogError("ofxBvh") << "invalid End Site declaration"; + return nullptr; + } + if (!parseJoint(index, tokens, joint)) return nullptr; } else if (token == "}") { + closed = true; break; } + else + { + ofLogError("ofxBvh") << "unexpected hierarchy token: " << token; + return nullptr; + } } + if (!closed) + { + ofLogError("ofxBvh") << "joint " << name << " has no closing brace"; + return nullptr; + } + return joint; } -void ofxBvh::parseMotion(const string& data) +bool ofxBvh::parseMotion(const string& data) { vector lines = ofSplitString(data, "\n", true, true); - - int index = 0; - - while (index < lines.size()) + size_t index = 0; + if (index >= lines.size() || ofTrim(lines[index++]) != "MOTION") { - string line = lines[index]; - - if (line.empty()) - { - index++; - continue; - } - - if (line.find("MOTION") != string::npos) {} - else if (line.find("Frames:") != string::npos) - { - num_frames = ofToInt(ofSplitString(line, ":")[1]); - } - else if (line.find("Frame Time:") != string::npos) - { - frame_time = ofToFloat(ofSplitString(line, ":")[1]); - } - else break; - - index++; + ofLogError("ofxBvh") << "motion section must begin with MOTION"; + return false; } - + + string value; + if (index >= lines.size() + || !valueForHeader(ofTrim(lines[index++]), "Frames", value) + || !parseIntToken(value, num_frames) + || num_frames <= 0) + { + ofLogError("ofxBvh") << "invalid Frames header"; + return false; + } + if (index >= lines.size() + || !valueForHeader(ofTrim(lines[index++]), "Frame Time", value) + || !parseFloatToken(value, frame_time) + || frame_time <= 0.0f + || total_channels <= 0) + { + ofLogError("ofxBvh") << "invalid Frame Time header"; + return false; + } + while (index < lines.size()) { - string line = lines[index]; - vector channels = ofSplitString(line, " "); + const string line = ofTrim(lines[index++]); + if (line.empty()) continue; - if (channels.size() != total_channels) + std::istringstream stream(line); + string channel; + FrameData frame; + while (stream >> channel) { - ofLogError("ofxBvh", "channel size mismatch"); - return; + float value = 0.0f; + if (!parseFloatToken(channel, value)) + { + ofLogError("ofxBvh") << "invalid motion channel value"; + return false; + } + frame.push_back(value); } - - char buf[64]; - FrameData data; - for (int i = 0; i < channels.size(); i++) + + if (frame.size() != static_cast(total_channels)) { - float v; - sscanf(channels[i].c_str(), "%f", &v); - data.push_back(v); + ofLogError("ofxBvh") << "channel size mismatch"; + return false; } - - frames.push_back(data); - - index++; + + frames.push_back(std::move(frame)); } - if (num_frames != frames.size()) - ofLogWarning("ofxBvh", "frame size mismatch"); + if (static_cast(num_frames) != frames.size()) + { + ofLogError("ofxBvh") << "frame size mismatch"; + return false; + } + const double duration = static_cast(num_frames) + * static_cast(frame_time); + if (!std::isfinite(duration) + || duration > static_cast(std::numeric_limits::max())) + { + ofLogError("ofxBvh") << "motion duration is out of range"; + return false; + } + + return true; } -const ofxBvhJoint* ofxBvh::getJoint(int index) +const ofxBvhJoint* ofxBvh::getJoint(int index) const { - return joints.at(index); + if (index < 0 || index >= static_cast(joints.size())) return nullptr; + return joints[static_cast(index)]; } -const ofxBvhJoint* ofxBvh::getJoint(string name) +const ofxBvhJoint* ofxBvh::getJoint(const string& name) const { - return jointMap[name]; + const auto it = jointMap.find(name); + return it == jointMap.end() ? nullptr : it->second; } static inline void billboard() @@ -438,27 +610,47 @@ static inline void billboard() GLfloat m[16]; glGetFloatv(GL_MODELVIEW_MATRIX, m); - float inv_len; - + constexpr float epsilon = 1e-12f; + m[8] = -m[12]; m[9] = -m[13]; m[10] = -m[14]; - inv_len = 1. / sqrt(m[8] * m[8] + m[9] * m[9] + m[10] * m[10]); - m[8] *= inv_len; - m[9] *= inv_len; - m[10] *= inv_len; + float lengthSquared = m[8] * m[8] + m[9] * m[9] + m[10] * m[10]; + if (lengthSquared > epsilon) + { + const float inverseLength = 1.0f / std::sqrt(lengthSquared); + m[8] *= inverseLength; + m[9] *= inverseLength; + m[10] *= inverseLength; + } + else + { + m[8] = 0.0f; + m[9] = 0.0f; + m[10] = 1.0f; + } m[0] = -m[14]; m[1] = 0.0; m[2] = m[12]; - inv_len = 1. / sqrt(m[0] * m[0] + m[1] * m[1] + m[2] * m[2]); - m[0] *= inv_len; - m[1] *= inv_len; - m[2] *= inv_len; + lengthSquared = m[0] * m[0] + m[1] * m[1] + m[2] * m[2]; + if (lengthSquared > epsilon) + { + const float inverseLength = 1.0f / std::sqrt(lengthSquared); + m[0] *= inverseLength; + m[1] *= inverseLength; + m[2] *= inverseLength; + } + else + { + m[0] = 1.0f; + m[1] = 0.0f; + m[2] = 0.0f; + } m[4] = m[9] * m[2] - m[10] * m[1]; m[5] = m[10] * m[0] - m[8] * m[2]; m[6] = m[8] * m[1] - m[9] * m[0]; glLoadMatrixf(m); -} \ No newline at end of file +} diff --git a/ofxBvh/src/ofxBvh.h b/ofxBvh/src/ofxBvh.h index 8aa8105..c989db7 100644 --- a/ofxBvh/src/ofxBvh.h +++ b/ofxBvh/src/ofxBvh.h @@ -16,7 +16,10 @@ class ofxBvhJoint X_POSITION, Y_POSITION, Z_POSITION }; - ofxBvhJoint(string name, ofxBvhJoint *parent) : name(name), parent(parent) {} + ofxBvhJoint(const string& name, ofxBvhJoint *parent) + : name(name) + , bvh(nullptr) + , parent(parent) {} inline const string& getName() const { return name; } inline const ofVec3f& getOffset() const { return offset; } @@ -56,39 +59,53 @@ class ofxBvh { public: - ofxBvh() : root(NULL), total_channels(0), rate(1), loop(false), - playing(false), play_head(0), need_update(false) {} + ofxBvh() + : total_channels(0) + , root(nullptr) + , num_frames(0) + , frame_time(0.0f) + , rate(1.0f) + , playing(false) + , play_head(0.0f) + , loop(false) + , need_update(false) + , frame_new(false) {} virtual ~ofxBvh(); + ofxBvh(const ofxBvh&) = delete; + ofxBvh& operator=(const ofxBvh&) = delete; - void load(string path); + bool load(const of::filesystem::path& path); void unload(); void update(); + void update(float deltaSeconds); void draw(); - bool isFrameNew(); + bool isFrameNew() const; + bool isLoaded() const; void play(); void stop(); - bool isPlaying(); + bool isPlaying() const; void setLoop(bool yn); - bool isLoop(); + bool isLoop() const; void setRate(float rate); void setFrame(int index); - int getFrame(); + int getFrame() const; void setPosition(float pos); - float getPosition(); + float getPosition() const; - float getDuration(); + float getDuration() const; - const int getNumJoints() const { return joints.size(); } - const ofxBvhJoint* getJoint(int index); - const ofxBvhJoint* getJoint(string name); + int getNumFrames() const { return static_cast(frames.size()); } + int getNumJoints() const { return static_cast(joints.size()); } + const ofxBvhJoint* getJoint(int index) const; + const ofxBvhJoint* getJoint(const string& name) const; protected: @@ -115,10 +132,10 @@ class ofxBvh bool need_update; bool frame_new; - void parseHierarchy(const string& data); - ofxBvhJoint* parseJoint(int& index, vector &tokens, ofxBvhJoint *parent); - void updateJoint(int& index, const FrameData& frame_data, ofxBvhJoint *joint); + bool parseHierarchy(const string& data); + ofxBvhJoint* parseJoint(size_t& index, const vector& tokens, ofxBvhJoint *parent); + bool updateJoint(size_t& index, const FrameData& frame_data, ofxBvhJoint *joint); - void parseMotion(const string& data); + bool parseMotion(const string& data); -}; \ No newline at end of file +}; diff --git a/particle-motion-example/LICENSE b/particle-motion-example/LICENSE index 1724108..56e2ae4 100644 --- a/particle-motion-example/LICENSE +++ b/particle-motion-example/LICENSE @@ -1,4 +1,6 @@ -Copyright (c) 2012 Perfume Dev Team +Copyright (c) 2012 Daito Manabe + +Originally published under the Perfume Dev Team name. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the diff --git a/particle-motion-example/Makefile b/particle-motion-example/Makefile new file mode 100644 index 0000000..14403c4 --- /dev/null +++ b/particle-motion-example/Makefile @@ -0,0 +1,10 @@ +# Attempt to load project-specific configuration. +ifneq ($(wildcard config.make),) + include config.make +endif + +ifndef OF_ROOT + OF_ROOT=../../../.. +endif + +include $(OF_ROOT)/libs/openFrameworksCompiled/project/makefileCommon/compile.project.mk diff --git a/particle-motion-example/Project.xcconfig b/particle-motion-example/Project.xcconfig index c10b9e5..7c338e1 100644 --- a/particle-motion-example/Project.xcconfig +++ b/particle-motion-example/Project.xcconfig @@ -1,9 +1,88 @@ //THE PATH TO THE ROOT OF OUR OF PATH RELATIVE TO THIS PROJECT. //THIS NEEDS TO BE DEFINED BEFORE CoreOF.xcconfig IS INCLUDED -OF_PATH = ../../.. +OF_PATH = ../../../.. //THIS HAS ALL THE HEADER AND LIBS FOR OF CORE -#include "../../../libs/openFrameworksCompiled/project/osx/CoreOF.xcconfig" +#include "../../../../libs/openFrameworksCompiled/project/osx/CoreOF.xcconfig" -OTHER_LDFLAGS = $(OF_CORE_LIBS) +//UNCOMMENT BELOW TO ENABLE C++ 17 and std::filesystem +CLANG_CXX_LANGUAGE_STANDARD = c++23 +CLANG_C_LANGUAGE_STANDARD = c17 +MACOSX_DEPLOYMENT_TARGET = 11.5 + +// App Settings +PRODUCT_NAME = $(TARGET_NAME) +PRODUCT_NAME[config=Debug] = $(TARGET_NAME)Debug +PRODUCT_BUNDLE_IDENTIFIER = cc.openFrameworks.${TARGET_NAME:rfc1034identifier} +//PRODUCT_BUNDLE_IDENTIFIER[config=Debug] = cc.openFrameworks.$(TARGET_NAME)Debug +DEVELOPMENT_LANGUAGE = English +CODE_SIGN_IDENTITY = - +INFOPLIST_FILE = openFrameworks-Info.plist +GENERATE_INFOPLIST_FILE = YES + +// set application category to games, this is required to enable Game mode +// note: this sets the initial value in the Xcode UI +INFOPLIST_KEY_LSApplicationCategoryType = public.app-category.games + +// VERSIONING - overridden if changed in Xcode UI + +// this is "Version" in the Xcode target Identity UI +// suggested to use semantic versioning format ala #.#.# +MARKETING_VERSION = 0.1.0 + +// If users upgrade project to recommended settings it enables script sandboxing which breaks our post build script +ENABLE_USER_SCRIPT_SANDBOXING=NO + +// this is "Build" in the Xcode target Identity UI, an incremental build number +// important for the App Store as new build submissions need a diff number even +// if MARKETING_VERSION is the same +CURRENT_PROJECT_VERSION = 1 + +// ICONS + +// default oF app icon +ICON_NAME = of.icns +ICON_NAME[config=Debug] = of_debug.icns +ICON_FILE = $(OF_PATH)/libs/openFrameworksCompiled/project/osx/$(ICON_NAME) + +// custom app icon, placed in main project folder +//ICON_NAME = MyApp.icns +//ICON_FILE = $(ICON_NAME) + +// custom app icon with separate Release and Debug versions placed in bin/data +//ICON_NAME = icon.icns +//ICON_NAME[config=Debug] = icon-debug.icns +//ICON_FILE = bin/data/$(ICON_NAME) + +// note: oF 0.7.2 - 0.11 used ICON_FILE_PATH which is no longer used in oF 0.12+ +// ex. change ICON_FILE_PATH = bin/data/ -> ICON_FILE = bin/data/$(ICON_NAME) & +// in a custom openFrameworks-Info.plist, set CFBundleIconFile to ICON_NAME + +//APPSTORE, uncomment next lines to bundle data folder and code sign +//OF_CODESIGN = 1 +//OF_BUNDLE_DATA_FOLDER = 1 +//OF_BUNDLE_DYLIBS = 1 + +HIGH_RESOLUTION_CAPABLE = NO + +// Optional include to keep any permanent settings as CODE_SIGN_IDENTITY. +#include? "App.xcconfig" + +//FOR AV ENGINE SOUND PLAYER UNCOMMENT THREE LINES BELOW +OF_NO_FMOD=1 +USER_PREPROCESSOR_DEFINITIONS="OF_NO_FMOD=1" +LIB_FMOD="" +GCC_PREPROCESSOR_DEFINITIONS=$(inherited) $(USER_PREPROCESSOR_DEFINITIONS) + +OTHER_CFLAGS = $(OF_CORE_CFLAGS) +OTHER_LDFLAGS = $(OF_CORE_LIBS) $(OF_CORE_FRAMEWORKS) HEADER_SEARCH_PATHS = $(OF_CORE_HEADERS) + +//THIS MAKES SURE THE APP BUILDS INSIDE THE BIN FOLDER +//If you comment this line out the app will be run from DerrivedData and your data/ files won't be accessible unless you uncomment OF_BUNDLE_DATA_FOLDER = 1 above +CONFIGURATION_BUILD_DIR = ${SRCROOT}/bin + +//OF_CORE_BUILD_COMMAND = echo \"💾 Compiling openFrameworks\"\nxcodebuild -project \"$OF_PATH/libs/openFrameworksCompiled/project/osx/openFrameworksLib.xcodeproj\" -target openFrameworks -configuration \"${CONFIGURATION}\" CLANG_CXX_LANGUAGE_STANDARD=$CLANG_CXX_LANGUAGE_STANDARD MACOSX_DEPLOYMENT_TARGET=$MACOSX_DEPLOYMENT_TARGET GCC_PREPROCESSOR_DEFINITIONS='$USER_PREPROCESSOR_DEFINITIONS' + + +OF_CORE_BUILD_COMMAND = xcodebuild -project $OF_PATH/libs/openFrameworksCompiled/project/osx/openFrameworksLib.xcodeproj -target openFrameworks -configuration ${CONFIGURATION} CLANG_CXX_LANGUAGE_STANDARD=$CLANG_CXX_LANGUAGE_STANDARD MACOSX_DEPLOYMENT_TARGET=$MACOSX_DEPLOYMENT_TARGET GCC_PREPROCESSOR_DEFINITIONS=$USER_PREPROCESSOR_DEFINITIONS diff --git a/particle-motion-example/addons.make b/particle-motion-example/addons.make new file mode 100644 index 0000000..bec539d --- /dev/null +++ b/particle-motion-example/addons.make @@ -0,0 +1 @@ +../ofxBvh diff --git a/particle-motion-example/config.make b/particle-motion-example/config.make new file mode 100644 index 0000000..c3593ae --- /dev/null +++ b/particle-motion-example/config.make @@ -0,0 +1,3 @@ +# This suite is designed to live at apps/myApps/example-openFrameworks. +# Override from any location with: make OF_ROOT=/path/to/openFrameworks +OF_ROOT ?= ../../../.. diff --git a/particle-motion-example/of.entitlements b/particle-motion-example/of.entitlements new file mode 100644 index 0000000..f4fc128 --- /dev/null +++ b/particle-motion-example/of.entitlements @@ -0,0 +1,24 @@ + + + + + com.apple.security.app-sandbox + + com.apple.security.device.audio-input + + com.apple.security.device.bluetooth + + com.apple.security.device.camera + + com.apple.security.device.usb + + com.apple.security.files.user-selected.read-write + + com.apple.security.network.client + + com.apple.security.network.server + + com.apple.security.print + + + diff --git a/particle-motion-example/particle-motion-example.xcodeproj/project.pbxproj b/particle-motion-example/particle-motion-example.xcodeproj/project.pbxproj index 15ef14a..5e2f048 100644 --- a/particle-motion-example/particle-motion-example.xcodeproj/project.pbxproj +++ b/particle-motion-example/particle-motion-example.xcodeproj/project.pbxproj @@ -1,567 +1,358 @@ -// !$*UTF8*$! { - archiveVersion = 1; - classes = { - }; - objectVersion = 42; - objects = { - -/* Begin PBXBuildFile section */ - 60EF06E71517A56200FC5D12 /* ofxBvh.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 60EF06D51517A56200FC5D12 /* ofxBvh.cpp */; }; - BBAB23CB13894F3D00AA2426 /* GLUT.framework in CopyFiles */ = {isa = PBXBuildFile; fileRef = BBAB23BE13894E4700AA2426 /* GLUT.framework */; }; - E4328149138ABC9F0047C5CB /* openFrameworksDebug.a in Frameworks */ = {isa = PBXBuildFile; fileRef = E4328148138ABC890047C5CB /* openFrameworksDebug.a */; }; - E45BE97B0E8CC7DD009D7055 /* AGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E45BE9710E8CC7DD009D7055 /* AGL.framework */; }; - E45BE97C0E8CC7DD009D7055 /* ApplicationServices.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E45BE9720E8CC7DD009D7055 /* ApplicationServices.framework */; }; - E45BE97D0E8CC7DD009D7055 /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E45BE9730E8CC7DD009D7055 /* AudioToolbox.framework */; }; - E45BE97E0E8CC7DD009D7055 /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E45BE9740E8CC7DD009D7055 /* Carbon.framework */; }; - E45BE97F0E8CC7DD009D7055 /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E45BE9750E8CC7DD009D7055 /* CoreAudio.framework */; }; - E45BE9800E8CC7DD009D7055 /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E45BE9760E8CC7DD009D7055 /* CoreFoundation.framework */; }; - E45BE9810E8CC7DD009D7055 /* CoreServices.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E45BE9770E8CC7DD009D7055 /* CoreServices.framework */; }; - E45BE9830E8CC7DD009D7055 /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E45BE9790E8CC7DD009D7055 /* OpenGL.framework */; }; - E45BE9840E8CC7DD009D7055 /* QuickTime.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E45BE97A0E8CC7DD009D7055 /* QuickTime.framework */; }; - E4B69E200A3A1BDC003C02F2 /* main.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E4B69E1D0A3A1BDC003C02F2 /* main.cpp */; }; - E4B69E210A3A1BDC003C02F2 /* testApp.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E4B69E1E0A3A1BDC003C02F2 /* testApp.cpp */; }; - E4C2424710CC5A17004149E2 /* AppKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E4C2424410CC5A17004149E2 /* AppKit.framework */; }; - E4C2424810CC5A17004149E2 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E4C2424510CC5A17004149E2 /* Cocoa.framework */; }; - E4C2424910CC5A17004149E2 /* IOKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E4C2424610CC5A17004149E2 /* IOKit.framework */; }; - E4EB6799138ADC1D00A09F29 /* GLUT.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BBAB23BE13894E4700AA2426 /* GLUT.framework */; }; -/* End PBXBuildFile section */ - -/* Begin PBXContainerItemProxy section */ - E4328147138ABC890047C5CB /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = E4328143138ABC890047C5CB /* openFrameworksLib.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = E4B27C1510CBEB8E00536013; - remoteInfo = openFrameworks; - }; - E4EEB9AB138B136A00A80321 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = E4328143138ABC890047C5CB /* openFrameworksLib.xcodeproj */; - proxyType = 1; - remoteGlobalIDString = E4B27C1410CBEB8E00536013; - remoteInfo = openFrameworks; - }; -/* End PBXContainerItemProxy section */ - -/* Begin PBXCopyFilesBuildPhase section */ - E4C2427710CC5ABF004149E2 /* CopyFiles */ = { - isa = PBXCopyFilesBuildPhase; - buildActionMask = 2147483647; - dstPath = ""; - dstSubfolderSpec = 10; - files = ( - BBAB23CB13894F3D00AA2426 /* GLUT.framework in CopyFiles */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXCopyFilesBuildPhase section */ - -/* Begin PBXFileReference section */ - 60EF06D51517A56200FC5D12 /* ofxBvh.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ofxBvh.cpp; sourceTree = ""; }; - 60EF06D61517A56200FC5D12 /* ofxBvh.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ofxBvh.h; sourceTree = ""; }; - BBAB23BE13894E4700AA2426 /* GLUT.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = GLUT.framework; path = ../../../libs/glut/lib/osx/GLUT.framework; sourceTree = ""; }; - E4328143138ABC890047C5CB /* openFrameworksLib.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = openFrameworksLib.xcodeproj; path = ../../../libs/openFrameworksCompiled/project/osx/openFrameworksLib.xcodeproj; sourceTree = SOURCE_ROOT; }; - E45BE9710E8CC7DD009D7055 /* AGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AGL.framework; path = /System/Library/Frameworks/AGL.framework; sourceTree = ""; }; - E45BE9720E8CC7DD009D7055 /* ApplicationServices.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = ApplicationServices.framework; path = /System/Library/Frameworks/ApplicationServices.framework; sourceTree = ""; }; - E45BE9730E8CC7DD009D7055 /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioToolbox.framework; path = /System/Library/Frameworks/AudioToolbox.framework; sourceTree = ""; }; - E45BE9740E8CC7DD009D7055 /* Carbon.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Carbon.framework; path = /System/Library/Frameworks/Carbon.framework; sourceTree = ""; }; - E45BE9750E8CC7DD009D7055 /* CoreAudio.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreAudio.framework; path = /System/Library/Frameworks/CoreAudio.framework; sourceTree = ""; }; - E45BE9760E8CC7DD009D7055 /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreFoundation.framework; path = /System/Library/Frameworks/CoreFoundation.framework; sourceTree = ""; }; - E45BE9770E8CC7DD009D7055 /* CoreServices.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreServices.framework; path = /System/Library/Frameworks/CoreServices.framework; sourceTree = ""; }; - E45BE9790E8CC7DD009D7055 /* OpenGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGL.framework; path = /System/Library/Frameworks/OpenGL.framework; sourceTree = ""; }; - E45BE97A0E8CC7DD009D7055 /* QuickTime.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuickTime.framework; path = /System/Library/Frameworks/QuickTime.framework; sourceTree = ""; }; - E4B69B5B0A3A1756003C02F2 /* pdev-oF-exampleDebug.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "pdev-oF-exampleDebug.app"; sourceTree = BUILT_PRODUCTS_DIR; }; - E4B69E1D0A3A1BDC003C02F2 /* main.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = main.cpp; path = src/main.cpp; sourceTree = SOURCE_ROOT; }; - E4B69E1E0A3A1BDC003C02F2 /* testApp.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.cpp; fileEncoding = 4; name = testApp.cpp; path = src/testApp.cpp; sourceTree = SOURCE_ROOT; }; - E4B69E1F0A3A1BDC003C02F2 /* testApp.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = testApp.h; path = src/testApp.h; sourceTree = SOURCE_ROOT; }; - E4B6FCAD0C3E899E008CF71C /* openFrameworks-Info.plist */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text.plist.xml; path = "openFrameworks-Info.plist"; sourceTree = ""; }; - E4C2424410CC5A17004149E2 /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = /System/Library/Frameworks/AppKit.framework; sourceTree = ""; }; - E4C2424510CC5A17004149E2 /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = /System/Library/Frameworks/Cocoa.framework; sourceTree = ""; }; - E4C2424610CC5A17004149E2 /* IOKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = IOKit.framework; path = /System/Library/Frameworks/IOKit.framework; sourceTree = ""; }; - E4EB691F138AFCF100A09F29 /* CoreOF.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = CoreOF.xcconfig; path = ../../../libs/openFrameworksCompiled/project/osx/CoreOF.xcconfig; sourceTree = SOURCE_ROOT; }; - E4EB6923138AFD0F00A09F29 /* Project.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = Project.xcconfig; sourceTree = ""; }; -/* End PBXFileReference section */ - -/* Begin PBXFrameworksBuildPhase section */ - E4B69B590A3A1756003C02F2 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - E4EB6799138ADC1D00A09F29 /* GLUT.framework in Frameworks */, - E4328149138ABC9F0047C5CB /* openFrameworksDebug.a in Frameworks */, - E45BE97B0E8CC7DD009D7055 /* AGL.framework in Frameworks */, - E45BE97C0E8CC7DD009D7055 /* ApplicationServices.framework in Frameworks */, - E45BE97D0E8CC7DD009D7055 /* AudioToolbox.framework in Frameworks */, - E45BE97E0E8CC7DD009D7055 /* Carbon.framework in Frameworks */, - E45BE97F0E8CC7DD009D7055 /* CoreAudio.framework in Frameworks */, - E45BE9800E8CC7DD009D7055 /* CoreFoundation.framework in Frameworks */, - E45BE9810E8CC7DD009D7055 /* CoreServices.framework in Frameworks */, - E45BE9830E8CC7DD009D7055 /* OpenGL.framework in Frameworks */, - E45BE9840E8CC7DD009D7055 /* QuickTime.framework in Frameworks */, - E4C2424710CC5A17004149E2 /* AppKit.framework in Frameworks */, - E4C2424810CC5A17004149E2 /* Cocoa.framework in Frameworks */, - E4C2424910CC5A17004149E2 /* IOKit.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXFrameworksBuildPhase section */ - -/* Begin PBXGroup section */ - 60EF06801517A56200FC5D12 /* ofxBvh */ = { - isa = PBXGroup; - children = ( - 60EF06D41517A56200FC5D12 /* src */, - ); - name = ofxBvh; - path = ../../../addons/ofxBvh; - sourceTree = ""; - }; - 60EF06D41517A56200FC5D12 /* src */ = { - isa = PBXGroup; - children = ( - 60EF06D51517A56200FC5D12 /* ofxBvh.cpp */, - 60EF06D61517A56200FC5D12 /* ofxBvh.h */, - ); - path = src; - sourceTree = ""; - }; - BB4B014C10F69532006C3DED /* addons */ = { - isa = PBXGroup; - children = ( - 60EF06801517A56200FC5D12 /* ofxBvh */, - ); - name = addons; - sourceTree = ""; - }; - BBAB23C913894ECA00AA2426 /* system frameworks */ = { - isa = PBXGroup; - children = ( - E4C2424410CC5A17004149E2 /* AppKit.framework */, - E4C2424510CC5A17004149E2 /* Cocoa.framework */, - E4C2424610CC5A17004149E2 /* IOKit.framework */, - E45BE9710E8CC7DD009D7055 /* AGL.framework */, - E45BE9720E8CC7DD009D7055 /* ApplicationServices.framework */, - E45BE9730E8CC7DD009D7055 /* AudioToolbox.framework */, - E45BE9740E8CC7DD009D7055 /* Carbon.framework */, - E45BE9750E8CC7DD009D7055 /* CoreAudio.framework */, - E45BE9760E8CC7DD009D7055 /* CoreFoundation.framework */, - E45BE9770E8CC7DD009D7055 /* CoreServices.framework */, - E45BE9790E8CC7DD009D7055 /* OpenGL.framework */, - E45BE97A0E8CC7DD009D7055 /* QuickTime.framework */, - ); - name = "system frameworks"; - sourceTree = ""; - }; - BBAB23CA13894EDB00AA2426 /* 3rd party frameworks */ = { - isa = PBXGroup; - children = ( - BBAB23BE13894E4700AA2426 /* GLUT.framework */, - ); - name = "3rd party frameworks"; - sourceTree = ""; - }; - E4328144138ABC890047C5CB /* Products */ = { - isa = PBXGroup; - children = ( - E4328148138ABC890047C5CB /* openFrameworksDebug.a */, - ); - name = Products; - sourceTree = ""; - }; - E45BE5980E8CC70C009D7055 /* frameworks */ = { - isa = PBXGroup; - children = ( - BBAB23CA13894EDB00AA2426 /* 3rd party frameworks */, - BBAB23C913894ECA00AA2426 /* system frameworks */, - ); - name = frameworks; - sourceTree = ""; - }; - E4B69B4A0A3A1720003C02F2 = { - isa = PBXGroup; - children = ( - E4B6FCAD0C3E899E008CF71C /* openFrameworks-Info.plist */, - E4EB6923138AFD0F00A09F29 /* Project.xcconfig */, - E4B69E1C0A3A1BDC003C02F2 /* src */, - E4EEC9E9138DF44700A80321 /* openFrameworks */, - BB4B014C10F69532006C3DED /* addons */, - E45BE5980E8CC70C009D7055 /* frameworks */, - E4B69B5B0A3A1756003C02F2 /* pdev-oF-exampleDebug.app */, - ); - sourceTree = ""; - }; - E4B69E1C0A3A1BDC003C02F2 /* src */ = { - isa = PBXGroup; - children = ( - E4B69E1D0A3A1BDC003C02F2 /* main.cpp */, - E4B69E1E0A3A1BDC003C02F2 /* testApp.cpp */, - E4B69E1F0A3A1BDC003C02F2 /* testApp.h */, - ); - path = src; - sourceTree = SOURCE_ROOT; - }; - E4EEC9E9138DF44700A80321 /* openFrameworks */ = { - isa = PBXGroup; - children = ( - E4EB691F138AFCF100A09F29 /* CoreOF.xcconfig */, - E4328143138ABC890047C5CB /* openFrameworksLib.xcodeproj */, - ); - name = openFrameworks; - sourceTree = ""; - }; -/* End PBXGroup section */ - -/* Begin PBXNativeTarget section */ - E4B69B5A0A3A1756003C02F2 /* particle-motion-example */ = { - isa = PBXNativeTarget; - buildConfigurationList = E4B69B5F0A3A1757003C02F2 /* Build configuration list for PBXNativeTarget "particle-motion-example" */; - buildPhases = ( - E4B69B580A3A1756003C02F2 /* Sources */, - E4B69B590A3A1756003C02F2 /* Frameworks */, - E4B6FFFD0C3F9AB9008CF71C /* ShellScript */, - E4C2427710CC5ABF004149E2 /* CopyFiles */, - ); - buildRules = ( - ); - dependencies = ( - E4EEB9AC138B136A00A80321 /* PBXTargetDependency */, - ); - name = "particle-motion-example"; - productName = myOFApp; - productReference = E4B69B5B0A3A1756003C02F2 /* pdev-oF-exampleDebug.app */; - productType = "com.apple.product-type.application"; - }; -/* End PBXNativeTarget section */ - -/* Begin PBXProject section */ - E4B69B4C0A3A1720003C02F2 /* Project object */ = { - isa = PBXProject; - buildConfigurationList = E4B69B4D0A3A1720003C02F2 /* Build configuration list for PBXProject "particle-motion-example" */; - compatibilityVersion = "Xcode 2.4"; - developmentRegion = English; - hasScannedForEncodings = 0; - knownRegions = ( - English, - Japanese, - French, - German, - ); - mainGroup = E4B69B4A0A3A1720003C02F2; - productRefGroup = E4B69B4A0A3A1720003C02F2; - projectDirPath = ""; - projectReferences = ( - { - ProductGroup = E4328144138ABC890047C5CB /* Products */; - ProjectRef = E4328143138ABC890047C5CB /* openFrameworksLib.xcodeproj */; - }, - ); - projectRoot = ""; - targets = ( - E4B69B5A0A3A1756003C02F2 /* particle-motion-example */, - ); - }; -/* End PBXProject section */ - -/* Begin PBXReferenceProxy section */ - E4328148138ABC890047C5CB /* openFrameworksDebug.a */ = { - isa = PBXReferenceProxy; - fileType = archive.ar; - path = openFrameworksDebug.a; - remoteRef = E4328147138ABC890047C5CB /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; -/* End PBXReferenceProxy section */ - -/* Begin PBXShellScriptBuildPhase section */ - E4B6FFFD0C3F9AB9008CF71C /* ShellScript */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - ); - outputPaths = ( - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "cp -f ../../../libs/fmodex/lib/osx/libfmodex.dylib \"$TARGET_BUILD_DIR/$PRODUCT_NAME.app/Contents/MacOS/libfmodex.dylib\"; install_name_tool -change ./libfmodex.dylib @executable_path/libfmodex.dylib \"$TARGET_BUILD_DIR/$PRODUCT_NAME.app/Contents/MacOS/$PRODUCT_NAME\";"; - }; -/* End PBXShellScriptBuildPhase section */ - -/* Begin PBXSourcesBuildPhase section */ - E4B69B580A3A1756003C02F2 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - E4B69E200A3A1BDC003C02F2 /* main.cpp in Sources */, - E4B69E210A3A1BDC003C02F2 /* testApp.cpp in Sources */, - 60EF06E71517A56200FC5D12 /* ofxBvh.cpp in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXSourcesBuildPhase section */ - -/* Begin PBXTargetDependency section */ - E4EEB9AC138B136A00A80321 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = openFrameworks; - targetProxy = E4EEB9AB138B136A00A80321 /* PBXContainerItemProxy */; - }; -/* End PBXTargetDependency section */ - -/* Begin XCBuildConfiguration section */ - E4B69B4E0A3A1720003C02F2 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = E4EB6923138AFD0F00A09F29 /* Project.xcconfig */; - buildSettings = { - ARCHS = "$(NATIVE_ARCH)"; - CONFIGURATION_BUILD_DIR = "$(SRCROOT)/bin/"; - COPY_PHASE_STRIP = NO; - DEAD_CODE_STRIPPING = YES; - GCC_AUTO_VECTORIZATION = YES; - GCC_ENABLE_SSE3_EXTENSIONS = YES; - GCC_ENABLE_SUPPLEMENTAL_SSE3_INSTRUCTIONS = YES; - GCC_INLINES_ARE_PRIVATE_EXTERN = NO; - GCC_MODEL_TUNING = G5; - GCC_SYMBOLS_PRIVATE_EXTERN = NO; - GCC_WARN_ABOUT_DEPRECATED_FUNCTIONS = NO; - GCC_WARN_ABOUT_INVALID_OFFSETOF_MACRO = NO; - GCC_WARN_ALLOW_INCOMPLETE_PROTOCOL = NO; - GCC_WARN_UNINITIALIZED_AUTOS = NO; - GCC_WARN_UNUSED_VALUE = NO; - GCC_WARN_UNUSED_VARIABLE = NO; - OTHER_CPLUSPLUSFLAGS = ( - "-D__MACOSX_CORE__", - "-lpthread", - ); - }; - name = Debug; - }; - E4B69B4F0A3A1720003C02F2 /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = E4EB6923138AFD0F00A09F29 /* Project.xcconfig */; - buildSettings = { - ARCHS = "$(NATIVE_ARCH)"; - CONFIGURATION_BUILD_DIR = "$(SRCROOT)/bin/"; - COPY_PHASE_STRIP = YES; - DEAD_CODE_STRIPPING = YES; - GCC_AUTO_VECTORIZATION = YES; - GCC_ENABLE_SSE3_EXTENSIONS = YES; - GCC_ENABLE_SUPPLEMENTAL_SSE3_INSTRUCTIONS = YES; - GCC_INLINES_ARE_PRIVATE_EXTERN = NO; - GCC_MODEL_TUNING = G5; - GCC_OPTIMIZATION_LEVEL = 3; - GCC_SYMBOLS_PRIVATE_EXTERN = NO; - GCC_UNROLL_LOOPS = YES; - GCC_WARN_ABOUT_DEPRECATED_FUNCTIONS = NO; - GCC_WARN_ABOUT_INVALID_OFFSETOF_MACRO = NO; - GCC_WARN_ALLOW_INCOMPLETE_PROTOCOL = NO; - GCC_WARN_UNINITIALIZED_AUTOS = NO; - GCC_WARN_UNUSED_VALUE = NO; - GCC_WARN_UNUSED_VARIABLE = NO; - OTHER_CPLUSPLUSFLAGS = ( - "-D__MACOSX_CORE__", - "-lpthread", - ); - }; - name = Release; - }; - E4B69B600A3A1757003C02F2 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - COPY_PHASE_STRIP = NO; - FRAMEWORK_SEARCH_PATHS = ( - "$(inherited)", - "$(FRAMEWORK_SEARCH_PATHS_QUOTED_FOR_TARGET_1)", - ); - FRAMEWORK_SEARCH_PATHS_QUOTED_FOR_TARGET_1 = "\"$(SRCROOT)/../../../libs/glut/lib/osx\""; - GCC_DYNAMIC_NO_PIC = NO; - GCC_ENABLE_FIX_AND_CONTINUE = YES; - GCC_GENERATE_DEBUGGING_SYMBOLS = YES; - GCC_MODEL_TUNING = G4; - GCC_PRECOMPILE_PREFIX_HEADER = YES; - GCC_PREFIX_HEADER = "$(SYSTEM_LIBRARY_DIR)/Frameworks/Carbon.framework/Headers/Carbon.h"; - INFOPLIST_FILE = "openFrameworks-Info.plist"; - INSTALL_PATH = "$(HOME)/Applications"; - LIBRARY_SEARCH_PATHS = ( - "$(inherited)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_1)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_2)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_3)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_4)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_5)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_6)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_7)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_8)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_9)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_10)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_11)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_12)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_13)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_14)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_15)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_2)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_3)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_7)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_8)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_9)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_10)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_11)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_12)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_13)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_16)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_17)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_18)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_19)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_20)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_21)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_22)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_23)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_24)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_25)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_26)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_27)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_28)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_29)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_30)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_31)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_32)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_33)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_34)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_35)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_36)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_37)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_38)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_39)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_40)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_41)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_42)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_43)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_44)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_45)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_46)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_47)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_48)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_49)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_50)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_51)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_52)", - ); - PREBINDING = NO; - PRODUCT_NAME = "particle-motion-exampleDebug"; - WRAPPER_EXTENSION = app; - }; - name = Debug; - }; - E4B69B610A3A1757003C02F2 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - COPY_PHASE_STRIP = YES; - FRAMEWORK_SEARCH_PATHS = ( - "$(inherited)", - "$(FRAMEWORK_SEARCH_PATHS_QUOTED_FOR_TARGET_1)", - ); - FRAMEWORK_SEARCH_PATHS_QUOTED_FOR_TARGET_1 = "\"$(SRCROOT)/../../../libs/glut/lib/osx\""; - GCC_ENABLE_FIX_AND_CONTINUE = NO; - GCC_GENERATE_DEBUGGING_SYMBOLS = NO; - GCC_MODEL_TUNING = G4; - GCC_PRECOMPILE_PREFIX_HEADER = YES; - GCC_PREFIX_HEADER = "$(SYSTEM_LIBRARY_DIR)/Frameworks/Carbon.framework/Headers/Carbon.h"; - INFOPLIST_FILE = "openFrameworks-Info.plist"; - INSTALL_PATH = "$(HOME)/Applications"; - LIBRARY_SEARCH_PATHS = ( - "$(inherited)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_1)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_2)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_3)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_4)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_5)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_6)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_7)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_8)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_9)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_10)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_11)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_12)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_13)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_14)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_15)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_2)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_1)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_3)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_7)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_8)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_9)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_10)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_11)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_12)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_13)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_16)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_17)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_18)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_19)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_20)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_21)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_22)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_23)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_24)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_25)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_26)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_27)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_28)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_29)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_30)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_31)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_32)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_33)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_34)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_35)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_36)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_37)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_38)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_39)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_40)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_41)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_42)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_43)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_44)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_45)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_46)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_47)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_48)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_49)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_50)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_51)", - ); - PREBINDING = NO; - PRODUCT_NAME = "particle-motion-example"; - WRAPPER_EXTENSION = app; - }; - name = Release; - }; -/* End XCBuildConfiguration section */ - -/* Begin XCConfigurationList section */ - E4B69B4D0A3A1720003C02F2 /* Build configuration list for PBXProject "particle-motion-example" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - E4B69B4E0A3A1720003C02F2 /* Debug */, - E4B69B4F0A3A1720003C02F2 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - E4B69B5F0A3A1757003C02F2 /* Build configuration list for PBXNativeTarget "particle-motion-example" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - E4B69B600A3A1757003C02F2 /* Debug */, - E4B69B610A3A1757003C02F2 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; -/* End XCConfigurationList section */ - }; - rootObject = E4B69B4C0A3A1720003C02F2 /* Project object */; + "_OFProjectGeneratorVersion": "0.103.0", + "archiveVersion": "1", + "classes": {}, + "objectVersion": "54", + "objects": { + "077B351F-C89F-46A4-AD3C-12D3AE083D3B": { + "children": [ + "83EAC6EF-1EAD-4B02-889B-D7B2727B04B4" + ], + "isa": "PBXGroup", + "name": "local_addons", + "path": "", + "sourceTree": "SOURCE_ROOT" + }, + "13CC977E-535A-4FD6-9242-487865427A1D": { + "fileRef": "888A1726-23FE-488B-9F18-27ECEF5CCBA8", + "isa": "PBXBuildFile" + }, + "191CD6FA2847E21E0085CBB6": { + "fileEncoding": "4", + "isa": "PBXFileReference", + "lastKnownFileType": "text.plist.entitlements", + "path": "of.entitlements", + "sourceTree": "" + }, + "191EF70929D778A400F35F26": { + "isa": "PBXFileReference", + "lastKnownFileType": "folder", + "name": "openFrameworks", + "path": "../../../../libs/openFrameworks", + "sourceTree": "SOURCE_ROOT" + }, + "19B789C429E5AB4A0082E9B8": { + "alwaysOutOfDate": "1", + "buildActionMask": "2147483647", + "files": [], + "inputFileListPaths": [], + "inputPaths": [], + "isa": "PBXShellScriptBuildPhase", + "outputFileListPaths": [], + "outputPaths": [], + "runOnlyForDeploymentPostprocessing": "0", + "shellPath": "/bin/sh", + "shellScript": "\"$OF_PATH/scripts/osx/xcode_project.sh\"\n", + "showEnvVarsInLog": "0" + }, + "7733E4C0-B6F9-4070-9450-ABD7D5C08F30": { + "fileRef": "F8A858FD-0FB1-4296-8B06-36A19FD6B383", + "isa": "PBXBuildFile" + }, + "83EAC6EF-1EAD-4B02-889B-D7B2727B04B4": { + "children": [ + "9BE696A4-1E70-463C-B9BE-75BAC6A5A775" + ], + "isa": "PBXGroup", + "name": "ofxBvh", + "path": "../ofxBvh", + "sourceTree": "SOURCE_ROOT" + }, + "888A1726-23FE-488B-9F18-27ECEF5CCBA8": { + "fileEncoding": "4", + "isa": "PBXFileReference", + "lastKnownFileType": "sourcecode.cpp.cpp", + "name": "testApp.cpp", + "sourceTree": "" + }, + "9BE696A4-1E70-463C-B9BE-75BAC6A5A775": { + "children": [ + "F8A858FD-0FB1-4296-8B06-36A19FD6B383", + "D2F21ABC-FB5B-4ED2-9912-250301CBF503" + ], + "isa": "PBXGroup", + "name": "src", + "path": "src", + "sourceTree": "" + }, + "B1932CEE-5913-4C26-B73E-A720502082A5": { + "fileEncoding": "4", + "isa": "PBXFileReference", + "lastKnownFileType": "folder", + "name": "data", + "path": "bin/data", + "sourceTree": "SOURCE_ROOT" + }, + "BB4B014C10F69532006C3DED": { + "children": [], + "isa": "PBXGroup", + "name": "addons", + "path": "../../../../addons", + "sourceTree": "SOURCE_ROOT" + }, + "D2F21ABC-FB5B-4ED2-9912-250301CBF503": { + "fileEncoding": "4", + "isa": "PBXFileReference", + "lastKnownFileType": "sourcecode.cpp.h", + "name": "ofxBvh.h", + "path": "../ofxBvh/src/ofxBvh.h", + "sourceTree": "SOURCE_ROOT" + }, + "E42962A92163ECCD00A6A9E2": { + "alwaysOutOfDate": "1", + "buildActionMask": "2147483647", + "files": [], + "inputPaths": [], + "isa": "PBXShellScriptBuildPhase", + "name": "Run Script — Compile OF", + "outputPaths": [], + "runOnlyForDeploymentPostprocessing": "0", + "shellPath": "/bin/sh", + "shellScript": "$OF_CORE_BUILD_COMMAND\n", + "showEnvVarsInLog": "0" + }, + "E4A5B60F29BAAAE400C2D356": { + "buildActionMask": "2147483647", + "dstPath": "", + "dstSubfolderSpec": "6", + "files": [], + "isa": "PBXCopyFilesBuildPhase", + "runOnlyForDeploymentPostprocessing": "0" + }, + "E4B69B4A0A3A1720003C02F2": { + "children": [ + "191CD6FA2847E21E0085CBB6", + "E4B6FCAD0C3E899E008CF71C", + "E4EB6923138AFD0F00A09F29", + "E4B69E1C0A3A1BDC003C02F2", + "191EF70929D778A400F35F26", + "BB4B014C10F69532006C3DED", + "E4B69B5B0A3A1756003C02F2", + "077B351F-C89F-46A4-AD3C-12D3AE083D3B", + "B1932CEE-5913-4C26-B73E-A720502082A5" + ], + "isa": "PBXGroup", + "sourceTree": "" + }, + "E4B69B4C0A3A1720003C02F2": { + "attributes": { + "BuildIndependentTargetsInParallel": "YES", + "LastUpgradeCheck": "1540" + }, + "buildConfigurationList": "E4B69B4D0A3A1720003C02F2", + "compatibilityVersion": "Xcode 3.2", + "developmentRegion": "en", + "hasScannedForEncodings": "0", + "isa": "PBXProject", + "knownRegions": [ + "en", + "Base" + ], + "mainGroup": "E4B69B4A0A3A1720003C02F2", + "productRefGroup": "E4B69B4A0A3A1720003C02F2", + "projectDirPath": "", + "projectRoot": "", + "targets": [ + "E4B69B5A0A3A1756003C02F2" + ] + }, + "E4B69B4D0A3A1720003C02F2": { + "buildConfigurations": [ + "E4B69B4E0A3A1720003C02F2", + "E4B69B4F0A3A1720003C02F2" + ], + "defaultConfigurationIsVisible": "0", + "defaultConfigurationName": "Release", + "isa": "XCConfigurationList" + }, + "E4B69B4E0A3A1720003C02F2": { + "baseConfigurationReference": "E4EB6923138AFD0F00A09F29", + "buildSettings": { + "CODE_SIGN_ENTITLEMENTS": "of.entitlements", + "COPY_PHASE_STRIP": "NO", + "ENABLE_TESTABILITY": "YES", + "GCC_OPTIMIZATION_LEVEL": "0", + "GCC_WARN_UNUSED_VARIABLE": "NO", + "HEADER_SEARCH_PATHS": [ + "$(OF_CORE_HEADERS)", + "src" + ], + "OTHER_CPLUSPLUSFLAGS": "-D__MACOSX_CORE__" + }, + "isa": "XCBuildConfiguration", + "name": "Debug" + }, + "E4B69B4F0A3A1720003C02F2": { + "baseConfigurationReference": "E4EB6923138AFD0F00A09F29", + "buildSettings": { + "CODE_SIGN_ENTITLEMENTS": "of.entitlements", + "COPY_PHASE_STRIP": "YES", + "GCC_OPTIMIZATION_LEVEL": "3", + "GCC_UNROLL_LOOPS": "YES", + "HEADER_SEARCH_PATHS": [ + "$(OF_CORE_HEADERS)", + "src" + ], + "OTHER_CPLUSPLUSFLAGS": "-D__MACOSX_CORE__" + }, + "isa": "XCBuildConfiguration", + "name": "Release" + }, + "E4B69B580A3A1756003C02F2": { + "buildActionMask": "2147483647", + "files": [ + "E4B69E200A3A1BDC003C02F2", + "13CC977E-535A-4FD6-9242-487865427A1D", + "7733E4C0-B6F9-4070-9450-ABD7D5C08F30" + ], + "isa": "PBXSourcesBuildPhase", + "runOnlyForDeploymentPostprocessing": "0" + }, + "E4B69B590A3A1756003C02F2": { + "buildActionMask": "2147483647", + "files": [], + "isa": "PBXFrameworksBuildPhase", + "runOnlyForDeploymentPostprocessing": "0" + }, + "E4B69B5A0A3A1756003C02F2": { + "buildConfigurationList": "E4B69B5F0A3A1757003C02F2", + "buildPhases": [ + "E42962A92163ECCD00A6A9E2", + "E4B69B580A3A1756003C02F2", + "E4B69B590A3A1756003C02F2", + "E4C2427710CC5ABF004149E2", + "E4A5B60F29BAAAE400C2D356", + "19B789C429E5AB4A0082E9B8" + ], + "buildRules": [], + "dependencies": [], + "isa": "PBXNativeTarget", + "name": "particle-motion-example", + "productName": "myOFApp", + "productReference": "E4B69B5B0A3A1756003C02F2", + "productType": "com.apple.product-type.application" + }, + "E4B69B5B0A3A1756003C02F2": { + "explicitFileType": "wrapper.application", + "includeInIndex": "0", + "isa": "PBXFileReference", + "path": "particle-motion-exampleDebug.app", + "sourceTree": "BUILT_PRODUCTS_DIR" + }, + "E4B69B5F0A3A1757003C02F2": { + "buildConfigurations": [ + "E4B69B600A3A1757003C02F2", + "E4B69B610A3A1757003C02F2" + ], + "defaultConfigurationIsVisible": "0", + "defaultConfigurationName": "Release", + "isa": "XCConfigurationList" + }, + "E4B69B600A3A1757003C02F2": { + "baseConfigurationReference": "E4EB6923138AFD0F00A09F29", + "buildSettings": { + "ARCHS": "$(ARCHS_STANDARD)", + "COPY_PHASE_STRIP": "NO", + "FRAMEWORK_SEARCH_PATHS": "$(inherited)", + "GCC_DYNAMIC_NO_PIC": "NO", + "HEADER_SEARCH_PATHS": [ + "$(OF_CORE_HEADERS)", + "src", + "src", + "../ofxBvh/src" + ], + "LIBRARY_SEARCH_PATHS": "$(inherited)", + "OTHER_LDFLAGS": [ + "$(OF_CORE_LIBS)", + "$(OF_CORE_FRAMEWORKS)", + "$(LIB_OF_DEBUG)" + ] + }, + "isa": "XCBuildConfiguration", + "name": "Debug" + }, + "E4B69B610A3A1757003C02F2": { + "baseConfigurationReference": "E4EB6923138AFD0F00A09F29", + "buildSettings": { + "ARCHS": "$(ARCHS_STANDARD)", + "COPY_PHASE_STRIP": "YES", + "FRAMEWORK_SEARCH_PATHS": "$(inherited)", + "HEADER_SEARCH_PATHS": [ + "$(OF_CORE_HEADERS)", + "src", + "src", + "../ofxBvh/src" + ], + "LIBRARY_SEARCH_PATHS": "$(inherited)", + "OTHER_LDFLAGS": [ + "$(OF_CORE_LIBS)", + "$(OF_CORE_FRAMEWORKS)", + "$(LIB_OF_RELEASE)" + ], + "baseConfigurationReference": "E4EB6923138AFD0F00A09F29" + }, + "isa": "XCBuildConfiguration", + "name": "Release" + }, + "E4B69E1C0A3A1BDC003C02F2": { + "children": [ + "E4B69E1D0A3A1BDC003C02F2", + "888A1726-23FE-488B-9F18-27ECEF5CCBA8", + "FCD3B90F-4712-4059-8435-D36B7B77D108" + ], + "isa": "PBXGroup", + "path": "src", + "sourceTree": "SOURCE_ROOT" + }, + "E4B69E1D0A3A1BDC003C02F2": { + "fileEncoding": "4", + "isa": "PBXFileReference", + "lastKnownFileType": "sourcecode.cpp.cpp", + "name": "main.cpp", + "path": "src/main.cpp", + "sourceTree": "SOURCE_ROOT" + }, + "E4B69E200A3A1BDC003C02F2": { + "fileRef": "E4B69E1D0A3A1BDC003C02F2", + "isa": "PBXBuildFile" + }, + "E4B6FCAD0C3E899E008CF71C": { + "fileEncoding": "4", + "isa": "PBXFileReference", + "lastKnownFileType": "text.plist.xml", + "path": "openFrameworks-Info.plist", + "sourceTree": "" + }, + "E4C2427710CC5ABF004149E2": { + "buildActionMask": "2147483647", + "dstPath": "", + "dstSubfolderSpec": "10", + "files": [], + "isa": "PBXCopyFilesBuildPhase", + "runOnlyForDeploymentPostprocessing": "0" + }, + "E4EB6923138AFD0F00A09F29": { + "fileEncoding": "4", + "isa": "PBXFileReference", + "lastKnownFileType": "text.xcconfig", + "path": "Project.xcconfig", + "sourceTree": "" + }, + "F8A858FD-0FB1-4296-8B06-36A19FD6B383": { + "fileEncoding": "4", + "isa": "PBXFileReference", + "lastKnownFileType": "sourcecode.cpp.cpp", + "name": "ofxBvh.cpp", + "path": "../ofxBvh/src/ofxBvh.cpp", + "sourceTree": "SOURCE_ROOT" + }, + "FCD3B90F-4712-4059-8435-D36B7B77D108": { + "fileEncoding": "4", + "isa": "PBXFileReference", + "lastKnownFileType": "sourcecode.cpp.h", + "name": "testApp.h", + "sourceTree": "" + } + }, + "rootObject": "E4B69B4C0A3A1720003C02F2" } diff --git a/particle-motion-example/particle-motion-example.xcodeproj/xcshareddata/xcschemes/particle-motion-example Debug.xcscheme b/particle-motion-example/particle-motion-example.xcodeproj/xcshareddata/xcschemes/particle-motion-example Debug.xcscheme new file mode 100644 index 0000000..03bfbb1 --- /dev/null +++ b/particle-motion-example/particle-motion-example.xcodeproj/xcshareddata/xcschemes/particle-motion-example Debug.xcscheme @@ -0,0 +1,104 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/particle-motion-example/particle-motion-example.xcodeproj/xcshareddata/xcschemes/particle-motion-example Release.xcscheme b/particle-motion-example/particle-motion-example.xcodeproj/xcshareddata/xcschemes/particle-motion-example Release.xcscheme new file mode 100644 index 0000000..d68faed --- /dev/null +++ b/particle-motion-example/particle-motion-example.xcodeproj/xcshareddata/xcschemes/particle-motion-example Release.xcscheme @@ -0,0 +1,104 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/particle-motion-example/src/main.cpp b/particle-motion-example/src/main.cpp index 44bb284..1349dcd 100644 --- a/particle-motion-example/src/main.cpp +++ b/particle-motion-example/src/main.cpp @@ -1,17 +1,14 @@ #include "ofMain.h" #include "testApp.h" -#include "ofAppGlutWindow.h" //======================================================================== -int main( ) -{ - - ofAppGlutWindow window; - ofSetupOpenGL(&window, 1280, 768, OF_WINDOW); - - // this kicks off the running of my app - // can be OF_WINDOW or OF_FULLSCREEN - // pass in width and height too: - ofRunApp(new testApp()); - -} \ No newline at end of file +int main() { + ofGLWindowSettings settings; + settings.setSize(1280, 768); + settings.setGLVersion(2, 1); + settings.windowMode = OF_WINDOW; + + auto window = ofCreateWindow(settings); + ofRunApp(window, std::make_shared()); + ofRunMainLoop(); +} diff --git a/particle-motion-example/src/testApp.cpp b/particle-motion-example/src/testApp.cpp index cd281f6..1c374d9 100644 --- a/particle-motion-example/src/testApp.cpp +++ b/particle-motion-example/src/testApp.cpp @@ -1,25 +1,55 @@ #include "testApp.h" +#include +#include + +namespace { + +const std::array kPerfumeMotionFiles = { + "bvhfiles/aachan.bvh", + "bvhfiles/kashiyuka.bvh", + "bvhfiles/nocchi.bvh" +}; + +const std::array kBundledMotionFiles = { + "../../../example-bvh/bin/data/A_test.bvh", + "../../../example-bvh/bin/data/B_test.bvh", + "../../../example-bvh/bin/data/C_test.bvh" +}; + +bool loadMotionFiles(std::array& motions) { + bool loaded = true; + for (size_t i = 0; i < motions.size(); ++i) { + if (!motions[i].load(kPerfumeMotionFiles[i])) { + ofLogWarning("particle-motion-example") + << "Using bundled motion fallback for " << kPerfumeMotionFiles[i]; + loaded = motions[i].load(kBundledMotionFiles[i]) && loaded; + } + } + return loaded; +} + +} // namespace + class Particle { public: - ofVec3f pos; - ofVec3f vel; - ofVec3f force; + ofVec3f pos = {0, 0, 0}; + ofVec3f vel = {0, 0, 0}; + ofVec3f force = {0, 0, 0}; }; class Tracker { public: - const ofxBvhJoint *joint, *root; + const ofxBvhJoint *joint = nullptr; deque samples; - void setup(const ofxBvhJoint *o, const ofxBvhJoint *r) + void setup(const ofxBvhJoint *o) { joint = o; - root = r; } void update(vector& particles) @@ -40,18 +70,17 @@ class Tracker const float m = 1.1; const float B = 1.6; - for (int i = 0; i < particles.size(); i++) + for (auto& particle : particles) { - Particle &o = particles[i]; - ofVec3f dist = (o.pos - p); - float r = dist.squareLength(); + ofVec3f dist = particle.pos - p; + float r = dist.lengthSquared(); if (r > 0 && r < 30*30) { r = sqrt(r); dist /= r; - o.force += ((A / pow(r, n)) - (B / pow(r, m))) * dist * 2; + particle.force += ((A / pow(r, n)) - (B / pow(r, m))) * dist * 2; } } } @@ -62,7 +91,7 @@ class Tracker if (samples.empty()) return 0; float v = 0; - for (int i = 0; i < samples.size() - 1; i++) + for (size_t i = 0; i + 1 < samples.size(); ++i) v += samples[i].distance(samples[i + 1]); return v; @@ -70,11 +99,11 @@ class Tracker float dot() { - if (samples.empty()) return 0; + if (samples.size() < 3) return 0; float v = 0; - for (int i = 1; i < samples.size() - 1; i++) + for (size_t i = 1; i + 1 < samples.size(); ++i) { const ofVec3f &v0 = samples[i - 1]; const ofVec3f &v1 = samples[i]; @@ -83,8 +112,8 @@ class Tracker if (v0.squareDistance(v1) == 0) continue; if (v1.squareDistance(v2) == 0) continue; - const ofVec3f d0 = (v0 - v1).normalized(); - const ofVec3f d1 = (v1 - v2).normalized(); + const ofVec3f d0 = (v0 - v1).getNormalized(); + const ofVec3f d1 = (v1 - v2).getNormalized(); v += (d0).dot(d1); } @@ -94,6 +123,8 @@ class Tracker void draw() { + if (samples.size() < 2) return; + float len = length(); len = ofMap(len, 30, 40, 0, 1, true); @@ -101,9 +132,10 @@ class Tracker d = ofMap(d, 1, 0, 255, 0, true); glBegin(GL_LINE_STRIP); - for (int i = 0; i < samples.size(); i++) + for (size_t i = 0; i < samples.size(); ++i) { - float a = ofMap(i, 0, samples.size() - 1, 1, 0, true); + float a = ofMap(static_cast(i), 0.0f, + static_cast(samples.size() - 1), 1.0f, 0.0f, true); ofSetColor(d * len, 140 * a); glVertex3fv(samples[i].getPtr()); } @@ -115,73 +147,63 @@ class ParticleShape { public: - ofxBvh *bvh; + ofxBvh *bvh = nullptr; - vector tracker; + vector> tracker; vector particles; - int particle_index; + size_t particle_index = 0; void setup(ofxBvh &o) { bvh = &o; - for (int i = 1; i < o.getNumJoints(); i++) + for (int i = 1; i < o.getNumJoints(); ++i) { if (bvh->getJoint(i)->getName().find("Chest") == string::npos) { - Tracker *t = new Tracker; - t->setup(bvh->getJoint(i), bvh->getJoint(0)); - tracker.push_back(t); + auto item = std::make_unique(); + item->setup(bvh->getJoint(i)); + tracker.push_back(std::move(item)); } } - particle_index = 0; particles.resize(15000); - for (int i = 0; i < particles.size(); i++) - { - Particle &p = particles[i]; - p.pos.set(0, 0, 0); - p.vel.set(0, 0, 0); - } } void update() { bvh->update(); - for (int i = 0; i < particles.size(); i++) + for (auto& particle : particles) { - Particle &p = particles[i]; - p.force.set(0, 0, 0); + particle.force.set(0, 0, 0); } if (bvh->isFrameNew()) { - for (int i = 0; i < tracker.size(); i++) + for (auto& item : tracker) { // update force - tracker[i]->update(particles); + item->update(particles); - const ofVec3f &p = tracker[i]->joint->getPosition(); + const ofVec3f &p = item->joint->getPosition(); // emit 10 particle every frame - for (int i = 0; i < 10; i++) + for (int i = 0; i < 10; ++i) { particles[particle_index].pos.set(p); particle_index++; - if (particle_index > particles.size()) + if (particle_index >= particles.size()) particle_index = 0; } } } // update particle position - for (int i = 0; i < particles.size(); i++) + for (auto& p : particles) { - Particle &p = particles[i]; - p.force.y += -0.1; p.vel *= 0.98; @@ -200,27 +222,24 @@ class ParticleShape { // bvh->draw(); - for (int i = 0; i < tracker.size(); i++) + for (auto& item : tracker) { - tracker[i]->draw(); + item->draw(); } ofSetColor(255, 15); glBegin(GL_POINTS); - for (int i = 0; i < particles.size(); i++) + for (auto& p : particles) { - Particle &p = particles[i]; glVertex3fv(p.pos.getPtr()); } glEnd(); } }; -const float trackDuration = 64.28; - -const size_t NUM_ACTOR = 3; -vector particle_shapes; -vector bvh; +constexpr size_t NUM_ACTOR = 3; +std::array particle_shapes; +std::array bvh; ofSoundPlayer player; @@ -234,37 +253,42 @@ void testApp::setup() ofBackground(0); - bvh.resize(NUM_ACTOR); - particle_shapes.resize(NUM_ACTOR); + assetsReady = loadMotionFiles(bvh); - // You have to get motion and sound data from http://www.perfume-global.com - - bvh[0].load("bvhfiles/aachan.bvh"); - bvh[1].load("bvhfiles/kashiyuka.bvh"); - bvh[2].load("bvhfiles/nocchi.bvh"); - - for (int i = 0; i < NUM_ACTOR; i++) + for (size_t i = 0; i < NUM_ACTOR; ++i) { bvh[i].setFrame(1); - particle_shapes[i].setup(bvh[i]); + if (assetsReady) particle_shapes[i].setup(bvh[i]); } - player.loadSound("Perfume_globalsite_sound.wav"); - player.play(); + audioReady = ofFile::doesFileExist("Perfume_globalsite_sound.wav") + && player.load("Perfume_globalsite_sound.wav"); + if (audioReady) { + player.setLoop(true); + player.play(); + } else { + ofLogNotice("particle-motion-example") + << "Audio file not found; using a silent internal clock."; + } } //-------------------------------------------------------------- void testApp::update() { - float t = (player.getPosition() * trackDuration); + if (!assetsReady) return; + const float motionDuration = bvh[0].getDuration(); + const float motionSeconds = audioReady + ? player.getPosition() * player.getDuration() + : std::fmod(ofGetElapsedTimef(), motionDuration); + const float t = ofClamp(motionSeconds / motionDuration, 0.0f, 1.0f); ofVec3f avg; - for (int i = 0; i < NUM_ACTOR; i++) + for (size_t i = 0; i < NUM_ACTOR; ++i) { ofxBvh *o = particle_shapes[i].bvh; - o->setPosition(t / o->getDuration()); + o->setPosition(t); particle_shapes[i].update(); avg += o->getJoint(0)->getPosition(); @@ -278,7 +302,7 @@ void testApp::update() //-------------------------------------------------------------- void testApp::draw() { - glDisable(GL_DEPTH_TEST); + ofDisableDepthTest(); ofEnableBlendMode(OF_BLENDMODE_ADD); // smooth particle @@ -292,20 +316,28 @@ void testApp::draw() glLineWidth(2); cam.begin(); - ofRotateY(ofGetElapsedTimef() * 10); + ofRotateYDeg(ofGetElapsedTimef() * 10); ofTranslate(-center); - for (int i = 0; i < NUM_ACTOR; i++) + for (size_t i = 0; i < NUM_ACTOR; ++i) { particle_shapes[i].draw(); } cam.end(); + ofEnableBlendMode(OF_BLENDMODE_ALPHA); + ofSetColor(255); + + if (!assetsReady) + ofDrawBitmapString("Motion data is missing. See README.md.", 10, 20); + else if (!audioReady) + ofDrawBitmapString("Audio data is missing; running with a silent clock.", 10, 20); } //-------------------------------------------------------------- void testApp::keyPressed(int key) { + if (!audioReady) return; if (player.getSpeed() > 0) player.setSpeed(0); else @@ -358,4 +390,4 @@ void testApp::gotMessage(ofMessage msg) void testApp::dragEvent(ofDragInfo dragInfo) { -} \ No newline at end of file +} diff --git a/particle-motion-example/src/testApp.h b/particle-motion-example/src/testApp.h index b121a7c..c62abd2 100644 --- a/particle-motion-example/src/testApp.h +++ b/particle-motion-example/src/testApp.h @@ -3,24 +3,24 @@ #include "ofMain.h" #include "ofxBvh.h" -class testApp : public ofBaseApp -{ +class testApp : public ofBaseApp { public: - void setup(); - void update(); - void draw(); + void setup() override; + void update() override; + void draw() override; - void keyPressed(int key); - void keyReleased(int key); - void mouseMoved(int x, int y); - void mouseDragged(int x, int y, int button); - void mousePressed(int x, int y, int button); - void mouseReleased(int x, int y, int button); - void windowResized(int w, int h); - void dragEvent(ofDragInfo dragInfo); - void gotMessage(ofMessage msg); + void keyPressed(int key) override; + void keyReleased(int key) override; + void mouseMoved(int x, int y) override; + void mouseDragged(int x, int y, int button) override; + void mousePressed(int x, int y, int button) override; + void mouseReleased(int x, int y, int button) override; + void windowResized(int w, int h) override; + void dragEvent(ofDragInfo dragInfo) override; + void gotMessage(ofMessage msg) override; - ofSoundPlayer player; ofEasyCam cam; -}; \ No newline at end of file + bool assetsReady = false; + bool audioReady = false; +}; diff --git a/scripts/LICENSE b/scripts/LICENSE new file mode 100644 index 0000000..1816353 --- /dev/null +++ b/scripts/LICENSE @@ -0,0 +1,19 @@ +Copyright (c) 2026 Daito Manabe + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/scripts/build-all.sh b/scripts/build-all.sh new file mode 100755 index 0000000..f8b23b1 --- /dev/null +++ b/scripts/build-all.sh @@ -0,0 +1,39 @@ +#!/usr/bin/env bash + +set -euo pipefail + +repo_root="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)" +of_root="${1:-${OF_ROOT:-}}" +jobs="${JOBS:-2}" + +if [[ -z "$of_root" ]]; then + echo "usage: $0 /path/to/openFrameworks" >&2 + exit 2 +fi + +if [[ ! -f "$of_root/libs/openFrameworksCompiled/project/makefileCommon/compile.project.mk" ]]; then + echo "not an openFrameworks root: $of_root" >&2 + exit 2 +fi + +apps=( + "example-bvh" + "example-sync-sound" + "example-pen-graphics" + "particle-motion-example" + "motion-visualization" + "marching-cubes" +) + +for app in "${apps[@]}"; do + echo "==> Building $app" + make -C "$repo_root/$app" Release OF_ROOT="$of_root" -j"$jobs" +done + +echo "==> Building regression test suite" +make -C "$repo_root/tests/ofxBvh-boundary" Release OF_ROOT="$of_root" -j"$jobs" + +echo "==> Running regression test suite" +"$repo_root/tests/ofxBvh-boundary/bin/ofxBvh-boundary.app/Contents/MacOS/ofxBvh-boundary" \ + "$repo_root/example-bvh/bin/data" \ + "$repo_root/tests/ofxBvh-boundary/fixtures" diff --git a/scripts/validate-xcode-projects.sh b/scripts/validate-xcode-projects.sh new file mode 100755 index 0000000..99ee0e7 --- /dev/null +++ b/scripts/validate-xcode-projects.sh @@ -0,0 +1,39 @@ +#!/usr/bin/env bash + +set -euo pipefail + +repo_root="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)" +if [[ -z "${DEVELOPER_DIR:-}" && -d /Applications/Xcode.app/Contents/Developer ]]; then + export DEVELOPER_DIR=/Applications/Xcode.app/Contents/Developer +fi +apps=( + "example-bvh" + "example-sync-sound" + "example-pen-graphics" + "particle-motion-example" + "motion-visualization" + "marching-cubes" +) + +for app in "${apps[@]}"; do + project="$repo_root/$app/$app.xcodeproj" + pbxproj="$project/project.pbxproj" + + test -f "$pbxproj" + xcodebuild -project "$project" -list >/dev/null + + grep -Fq '"path": "src/main.cpp"' "$pbxproj" + grep -Fq '"name": "testApp.cpp"' "$pbxproj" + grep -Fq '"name": "testApp.h"' "$pbxproj" + grep -Fq '"path": "../ofxBvh/src/ofxBvh.cpp"' "$pbxproj" + if grep -Eq 'ofApp\.(cpp|h)' "$pbxproj"; then + echo "$app references a missing template ofApp source" >&2 + exit 1 + fi + + if [[ "$app" == "marching-cubes" ]]; then + grep -Fq '"path": "../third_party/ofxMarchingCubes/src/ofxMarchingCubes.cpp"' "$pbxproj" + fi + + echo "$app Xcode project: OK" +done diff --git a/tests/ofxBvh-boundary/LICENSE b/tests/ofxBvh-boundary/LICENSE new file mode 100644 index 0000000..1816353 --- /dev/null +++ b/tests/ofxBvh-boundary/LICENSE @@ -0,0 +1,19 @@ +Copyright (c) 2026 Daito Manabe + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/tests/ofxBvh-boundary/Makefile b/tests/ofxBvh-boundary/Makefile new file mode 100644 index 0000000..cae8111 --- /dev/null +++ b/tests/ofxBvh-boundary/Makefile @@ -0,0 +1,9 @@ +ifneq ($(wildcard config.make),) + include config.make +endif + +ifndef OF_ROOT + OF_ROOT=../../../.. +endif + +include $(OF_ROOT)/libs/openFrameworksCompiled/project/makefileCommon/compile.project.mk diff --git a/tests/ofxBvh-boundary/addons.make b/tests/ofxBvh-boundary/addons.make new file mode 100644 index 0000000..e33283a --- /dev/null +++ b/tests/ofxBvh-boundary/addons.make @@ -0,0 +1,2 @@ +../../ofxBvh +../../third_party/ofxMarchingCubes diff --git a/tests/ofxBvh-boundary/config.make b/tests/ofxBvh-boundary/config.make new file mode 100644 index 0000000..d1cfeb7 --- /dev/null +++ b/tests/ofxBvh-boundary/config.make @@ -0,0 +1,2 @@ +OF_ROOT ?= ../../../../.. +APPNAME = ofxBvh-boundary diff --git a/tests/ofxBvh-boundary/fixtures/channel-count-mismatch.bvh b/tests/ofxBvh-boundary/fixtures/channel-count-mismatch.bvh new file mode 100644 index 0000000..506b516 --- /dev/null +++ b/tests/ofxBvh-boundary/fixtures/channel-count-mismatch.bvh @@ -0,0 +1,10 @@ +HIERARCHY +ROOT Root +{ + OFFSET 0 0 0 + CHANNELS 2 Xposition Yposition +} +MOTION +Frames: 1 +Frame Time: 0.033333 +0 diff --git a/tests/ofxBvh-boundary/fixtures/invalid-channel-suffix.bvh b/tests/ofxBvh-boundary/fixtures/invalid-channel-suffix.bvh new file mode 100644 index 0000000..5617d9a --- /dev/null +++ b/tests/ofxBvh-boundary/fixtures/invalid-channel-suffix.bvh @@ -0,0 +1,10 @@ +HIERARCHY +ROOT Root +{ + OFFSET 0 0 0 + CHANNELS 1 Xposition-bogus +} +MOTION +Frames: 1 +Frame Time: 0.0333333 +0 diff --git a/tests/ofxBvh-boundary/fixtures/malformed-header-prefix.bvh b/tests/ofxBvh-boundary/fixtures/malformed-header-prefix.bvh new file mode 100644 index 0000000..113db2c --- /dev/null +++ b/tests/ofxBvh-boundary/fixtures/malformed-header-prefix.bvh @@ -0,0 +1,10 @@ +HIERARCHY +ROOT Root +{ + OFFSET 0 0 0 + CHANNELS 1 Xposition +} +MOTION +FramesBogus: 1 +Frame Time: 0.0333333 +0 diff --git a/tests/ofxBvh-boundary/fixtures/malformed-motion-header.bvh b/tests/ofxBvh-boundary/fixtures/malformed-motion-header.bvh new file mode 100644 index 0000000..96c81af --- /dev/null +++ b/tests/ofxBvh-boundary/fixtures/malformed-motion-header.bvh @@ -0,0 +1,10 @@ +HIERARCHY +ROOT Root +{ + OFFSET 0 0 0 + CHANNELS 1 Xposition +} +MOTION +Frames 1 +Frame Time: 0.033333 +0 diff --git a/tests/ofxBvh-boundary/fixtures/motion-in-joint-name.bvh b/tests/ofxBvh-boundary/fixtures/motion-in-joint-name.bvh new file mode 100644 index 0000000..7f97d5f --- /dev/null +++ b/tests/ofxBvh-boundary/fixtures/motion-in-joint-name.bvh @@ -0,0 +1,10 @@ +HIERARCHY +ROOT MOTION_CAPTURE +{ + OFFSET 0 0 0 + CHANNELS 1 Xposition +} +MOTION +Frames: 1 +Frame Time: 0.0333333 +0 diff --git a/tests/ofxBvh-boundary/fixtures/short-channel-name.bvh b/tests/ofxBvh-boundary/fixtures/short-channel-name.bvh new file mode 100644 index 0000000..e47b7a8 --- /dev/null +++ b/tests/ofxBvh-boundary/fixtures/short-channel-name.bvh @@ -0,0 +1,10 @@ +HIERARCHY +ROOT Root +{ + OFFSET 0 0 0 + CHANNELS 1 X +} +MOTION +Frames: 1 +Frame Time: 0.033333 +0 diff --git a/tests/ofxBvh-boundary/fixtures/trailing-hierarchy-data.bvh b/tests/ofxBvh-boundary/fixtures/trailing-hierarchy-data.bvh new file mode 100644 index 0000000..c6c5484 --- /dev/null +++ b/tests/ofxBvh-boundary/fixtures/trailing-hierarchy-data.bvh @@ -0,0 +1,11 @@ +HIERARCHY +ROOT Root +{ + OFFSET 0 0 0 + CHANNELS 1 Xposition +} +GARBAGE +MOTION +Frames: 1 +Frame Time: 0.0333333 +0 diff --git a/tests/ofxBvh-boundary/fixtures/truncated-hierarchy.bvh b/tests/ofxBvh-boundary/fixtures/truncated-hierarchy.bvh new file mode 100644 index 0000000..df958e3 --- /dev/null +++ b/tests/ofxBvh-boundary/fixtures/truncated-hierarchy.bvh @@ -0,0 +1,8 @@ +HIERARCHY +ROOT Root +{ + OFFSET 0 0 +MOTION +Frames: 1 +Frame Time: 0.033333 +0 diff --git a/tests/ofxBvh-boundary/openFrameworks-Info.plist b/tests/ofxBvh-boundary/openFrameworks-Info.plist new file mode 100644 index 0000000..c362e38 --- /dev/null +++ b/tests/ofxBvh-boundary/openFrameworks-Info.plist @@ -0,0 +1,34 @@ + + + + + CFBundleDevelopmentRegion + ${DEVELOPMENT_LANGUAGE} + CFBundleExecutable + ${EXECUTABLE_NAME} + CFBundleIconFile + ${ICON_NAME} + CFBundleIdentifier + ${PRODUCT_BUNDLE_IDENTIFIER} + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + ${TARGET_NAME} + CFBundlePackageType + APPL + CFBundleSignature + ???? + CFBundleShortVersionString + ${MARKETING_VERSION} + CFBundleVersion + ${CURRENT_PROJECT_VERSION} + NSCameraUsageDescription + This app needs to access the camera + NSMicrophoneUsageDescription + This app needs to access the microphone + NSHighResolutionCapable + ${HIGH_RESOLUTION_CAPABLE} + NSCameraUseContinuityCameraDeviceType + + + diff --git a/tests/ofxBvh-boundary/src/main.cpp b/tests/ofxBvh-boundary/src/main.cpp new file mode 100644 index 0000000..c64425e --- /dev/null +++ b/tests/ofxBvh-boundary/src/main.cpp @@ -0,0 +1,114 @@ +#include "ofMain.h" +#include "ofxBvh.h" +#include "ofxMarchingCubes.h" + +#include +#include +#include +#include +#include + +namespace { + +bool expect(bool condition, const char* message) { + if (!condition) std::cerr << "FAIL: " << message << '\n'; + return condition; +} + +} // namespace + +int main(int argc, char** argv) { + if (argc != 3) { + std::cerr << "usage: ofxBvh-boundary \n"; + return 2; + } + + const std::filesystem::path sampleDirectory = argv[1]; + const std::filesystem::path fixtureDirectory = argv[2]; + ofxBvh motion; + bool passed = expect(motion.load(sampleDirectory / "A_test.bvh"), "sample BVH should load"); + passed &= expect(motion.isLoaded(), "loaded state should be true"); + passed &= expect(motion.getNumFrames() > 1, "sample should contain multiple frames"); + + const int lastFrame = motion.getNumFrames() - 1; + motion.setFrame(-1); + passed &= expect(motion.getFrame() == 0, "negative frame should be ignored"); + motion.setFrame(motion.getNumFrames()); + passed &= expect(motion.getFrame() == 0, "one-past-end frame should be ignored"); + motion.setPosition(1.0f); + passed &= expect(motion.getFrame() == lastFrame, "position 1 should select the last frame"); + + motion.setLoop(false); + motion.setRate(1.0f); + motion.play(); + motion.update(motion.getDuration()); + passed &= expect(motion.getFrame() == lastFrame, "non-looping playback should clamp at the last frame"); + passed &= expect(!motion.isPlaying(), "non-looping playback should stop at the end"); + + motion.setLoop(true); + motion.play(); + motion.update(motion.getDuration() * 2.5f); + passed &= expect(motion.getFrame() >= 0 && motion.getFrame() <= lastFrame, + "looping playback should wrap to a valid frame"); + const int frameBeforeInvalidDelta = motion.getFrame(); + motion.update(std::numeric_limits::infinity()); + passed &= expect(motion.getFrame() == frameBeforeInvalidDelta, + "non-finite delta should be ignored"); + motion.setRate(std::numeric_limits::max()); + motion.update(std::numeric_limits::max()); + passed &= expect(motion.isLoaded() + && motion.getFrame() >= 0 && motion.getFrame() <= lastFrame, + "large finite playback values should remain safe"); + + motion.setLoop(false); + motion.setRate(-1.0f); + motion.setFrame(0); + motion.play(); + motion.update(1.0f); + passed &= expect(motion.getFrame() == 0, "reverse playback should clamp at frame zero"); + passed &= expect(!motion.isPlaying(), "reverse playback should stop at frame zero"); + + motion.unload(); + passed &= expect(!motion.isLoaded(), "unload should clear loaded state"); + passed &= expect(motion.getFrame() == 0, "empty motion should have a safe frame value"); + passed &= expect(motion.load(fixtureDirectory / "motion-in-joint-name.bvh"), + "MOTION inside a joint name should not be mistaken for the section marker"); + motion.unload(); + + const std::array malformedFiles = { + "truncated-hierarchy.bvh", + "short-channel-name.bvh", + "malformed-motion-header.bvh", + "channel-count-mismatch.bvh", + "trailing-hierarchy-data.bvh", + "malformed-header-prefix.bvh", + "invalid-channel-suffix.bvh", + }; + for (const auto& file : malformedFiles) { + passed &= expect(!motion.load(fixtureDirectory / file), + ("malformed fixture should be rejected: " + file.string()).c_str()); + passed &= expect(!motion.isLoaded(), "failed load should leave the parser unloaded"); + } + passed &= expect(!motion.load(fixtureDirectory / "does-not-exist.bvh"), + "a missing file should be rejected"); + + ofxMarchingCubes marchingCubes; + marchingCubes.clear(); + marchingCubes.clear(); + marchingCubes.update(0.5f); + passed &= expect(marchingCubes.getGridRes() == ofPoint(0, 0, 0), + "an uninitialized marching-cubes grid should remain safely empty"); + marchingCubes.init(ofPoint(0, 0, 0), ofPoint(2, 2, 2), 2, 2, 2); + const ofPoint gridPoint = marchingCubes.getGrid()[0][0][0]; + marchingCubes.addMetaBall(gridPoint, 1.0f); + passed &= expect(std::isfinite(marchingCubes.getIsoValue(0, 0, 0)), + "a metaball exactly on a grid point should remain finite"); + marchingCubes.clear(); + marchingCubes.update(0.5f); + passed &= expect(marchingCubes.getNumTriangles() == 0, + "a cleared marching-cubes grid should update safely"); + + if (!passed) return 1; + std::cout << "regression tests passed\n"; + return 0; +} diff --git a/third_party/ofxMarchingCubes/LICENSE.txt b/third_party/ofxMarchingCubes/LICENSE.txt new file mode 100644 index 0000000..f6683e7 --- /dev/null +++ b/third_party/ofxMarchingCubes/LICENSE.txt @@ -0,0 +1,501 @@ + GNU LESSER GENERAL PUBLIC LICENSE + Version 2.1, February 1999 + + Copyright (C) 1991, 1999 Free Software Foundation, Inc. + + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + +[This is the first released version of the Lesser GPL. It also counts + as the successor of the GNU Library Public License, version 2, hence + the version number 2.1.] + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +Licenses are intended to guarantee your freedom to share and change +free software--to make sure the software is free for all its users. + + This license, the Lesser General Public License, applies to some +specially designated software packages--typically libraries--of the +Free Software Foundation and other authors who decide to use it. You +can use it too, but we suggest you first think carefully about whether +this license or the ordinary General Public License is the better +strategy to use in any particular case, based on the explanations below. + + When we speak of free software, we are referring to freedom of use, +not price. Our General Public Licenses are designed to make sure that +you have the freedom to distribute copies of free software (and charge +for this service if you wish); that you receive source code or can get +it if you want it; that you can change the software and use pieces of +it in new free programs; and that you are informed that you can do +these things. + + To protect your rights, we need to make restrictions that forbid +distributors to deny you these rights or to ask you to surrender these +rights. These restrictions translate to certain responsibilities for +you if you distribute copies of the library or if you modify it. + + For example, if you distribute copies of the library, whether gratis +or for a fee, you must give the recipients all the rights that we gave +you. You must make sure that they, too, receive or can get the source +code. If you link other code with the library, you must provide +complete object files to the recipients, so that they can relink them +with the library after making changes to the library and recompiling +it. And you must show them these terms so they know their rights. + + We protect your rights with a two-step method: (1) we copyright the +library, and (2) we offer you this license, which gives you legal +permission to copy, distribute and/or modify the library. + + To protect each distributor, we want to make it very clear that +there is no warranty for the free library. Also, if the library is +modified by someone else and passed on, the recipients should know +that what they have is not the original version, so that the original +author's reputation will not be affected by problems that might be +introduced by others. + + Finally, software patents pose a constant threat to the existence of +any free program. We wish to make sure that a company cannot +effectively restrict the users of a free program by obtaining a +restrictive license from a patent holder. Therefore, we insist that +any patent license obtained for a version of the library must be +consistent with the full freedom of use specified in this license. + + Most GNU software, including some libraries, is covered by the +ordinary GNU General Public License. This license, the GNU Lesser +General Public License, applies to certain designated libraries, and +is quite different from the ordinary General Public License. We use +this license for certain libraries in order to permit linking those +libraries into non-free programs. + + When a program is linked with a library, whether statically or using +a shared library, the combination of the two is legally speaking a +combined work, a derivative of the original library. The ordinary +General Public License therefore permits such linking only if the +entire combination fits its criteria of freedom. The Lesser General +Public License permits more lax criteria for linking other code with +the library. + + We call this license the "Lesser" General Public License because it +does Less to protect the user's freedom than the ordinary General +Public License. It also provides other free software developers Less +of an advantage over competing non-free programs. These disadvantages +are the reason we use the ordinary General Public License for many +libraries. However, the Lesser license provides advantages in certain +special circumstances. + + For example, on rare occasions, there may be a special need to +encourage the widest possible use of a certain library, so that it becomes +a de-facto standard. To achieve this, non-free programs must be +allowed to use the library. A more frequent case is that a free +library does the same job as widely used non-free libraries. In this +case, there is little to gain by limiting the free library to free +software only, so we use the Lesser General Public License. + + In other cases, permission to use a particular library in non-free +programs enables a greater number of people to use a large body of +free software. For example, permission to use the GNU C Library in +non-free programs enables many more people to use the whole GNU +operating system, as well as its variant, the GNU/Linux operating +system. + + Although the Lesser General Public License is Less protective of the +users' freedom, it does ensure that the user of a program that is +linked with the Library has the freedom and the wherewithal to run +that program using a modified version of the Library. + + The precise terms and conditions for copying, distribution and +modification follow. Pay close attention to the difference between a +"work based on the library" and a "work that uses the library". The +former contains code derived from the library, whereas the latter must +be combined with the library in order to run. + + GNU LESSER GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License Agreement applies to any software library or other +program which contains a notice placed by the copyright holder or +other authorized party saying it may be distributed under the terms of +this Lesser General Public License (also called "this License"). +Each licensee is addressed as "you". + + A "library" means a collection of software functions and/or data +prepared so as to be conveniently linked with application programs +(which use some of those functions and data) to form executables. + + The "Library", below, refers to any such software library or work +which has been distributed under these terms. A "work based on the +Library" means either the Library or any derivative work under +copyright law: that is to say, a work containing the Library or a +portion of it, either verbatim or with modifications and/or translated +straightforwardly into another language. (Hereinafter, translation is +included without limitation in the term "modification".) + + "Source code" for a work means the preferred form of the work for +making modifications to it. For a library, complete source code means +all the source code for all modules it contains, plus any associated +interface definition files, plus the scripts used to control compilation +and installation of the library. + + Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running a program using the Library is not restricted, and output from +such a program is covered only if its contents constitute a work based +on the Library (independent of the use of the Library in a tool for +writing it). Whether that is true depends on what the Library does +and what the program that uses the Library does. + + 1. You may copy and distribute verbatim copies of the Library's +complete source code as you receive it, in any medium, provided that +you conspicuously and appropriately publish on each copy an +appropriate copyright notice and disclaimer of warranty; keep intact +all the notices that refer to this License and to the absence of any +warranty; and distribute a copy of this License along with the +Library. + + You may charge a fee for the physical act of transferring a copy, +and you may at your option offer warranty protection in exchange for a +fee. + + 2. You may modify your copy or copies of the Library or any portion +of it, thus forming a work based on the Library, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) The modified work must itself be a software library. + + b) You must cause the files modified to carry prominent notices + stating that you changed the files and the date of any change. + + c) You must cause the whole of the work to be licensed at no + charge to all third parties under the terms of this License. + + d) If a facility in the modified Library refers to a function or a + table of data to be supplied by an application program that uses + the facility, other than as an argument passed when the facility + is invoked, then you must make a good faith effort to ensure that, + in the event an application does not supply such function or + table, the facility still operates, and performs whatever part of + its purpose remains meaningful. + + (For example, a function in a library to compute square roots has + a purpose that is entirely well-defined independent of the + application. Therefore, Subsection 2d requires that any + application-supplied function or table used by this function must + be optional: if the application does not supply it, the square + root function must still compute square roots.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Library, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Library, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote +it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Library. + +In addition, mere aggregation of another work not based on the Library +with the Library (or with a work based on the Library) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may opt to apply the terms of the ordinary GNU General Public +License instead of this License to a given copy of the Library. To do +this, you must alter all the notices that refer to this License, so +that they refer to the ordinary GNU General Public License, version 2, +instead of to this License. (If a newer version than version 2 of the +ordinary GNU General Public License has appeared, then you can specify +that version instead if you wish.) Do not make any other change in +these notices. + + Once this change is made in a given copy, it is irreversible for +that copy, so the ordinary GNU General Public License applies to all +subsequent copies and derivative works made from that copy. + + This option is useful when you wish to copy part of the code of +the Library into a program that is not a library. + + 4. You may copy and distribute the Library (or a portion or +derivative of it, under Section 2) in object code or executable form +under the terms of Sections 1 and 2 above provided that you accompany +it with the complete corresponding machine-readable source code, which +must be distributed under the terms of Sections 1 and 2 above on a +medium customarily used for software interchange. + + If distribution of object code is made by offering access to copy +from a designated place, then offering equivalent access to copy the +source code from the same place satisfies the requirement to +distribute the source code, even though third parties are not +compelled to copy the source along with the object code. + + 5. A program that contains no derivative of any portion of the +Library, but is designed to work with the Library by being compiled or +linked with it, is called a "work that uses the Library". Such a +work, in isolation, is not a derivative work of the Library, and +therefore falls outside the scope of this License. + + However, linking a "work that uses the Library" with the Library +creates an executable that is a derivative of the Library (because it +contains portions of the Library), rather than a "work that uses the +library". The executable is therefore covered by this License. +Section 6 states terms for distribution of such executables. + + When a "work that uses the Library" uses material from a header file +that is part of the Library, the object code for the work may be a +derivative work of the Library even though the source code is not. +Whether this is true is especially significant if the work can be +linked without the Library, or if the work is itself a library. The +threshold for this to be true is not precisely defined by law. + + If such an object file uses only numerical parameters, data +structure layouts and accessors, and small macros and small inline +functions (ten lines or less in length), then the use of the object +file is unrestricted, regardless of whether it is legally a derivative +work. (Executables containing this object code plus portions of the +Library will still fall under Section 6.) + + Otherwise, if the work is a derivative of the Library, you may +distribute the object code for the work under the terms of Section 6. +Any executables containing that work also fall under Section 6, +whether or not they are linked directly with the Library itself. + + 6. As an exception to the Sections above, you may also combine or +link a "work that uses the Library" with the Library to produce a +work containing portions of the Library, and distribute that work +under terms of your choice, provided that the terms permit +modification of the work for the customer's own use and reverse +engineering for debugging such modifications. + + You must give prominent notice with each copy of the work that the +Library is used in it and that the Library and its use are covered by +this License. You must supply a copy of this License. If the work +during execution displays copyright notices, you must include the +copyright notice for the Library among them, as well as a reference +directing the user to the copy of this License. Also, you must do one +of these things: + + a) Accompany the work with the complete corresponding + machine-readable source code for the Library including whatever + changes were used in the work (which must be distributed under + Sections 1 and 2 above); and, if the work is an executable linked + with the Library, with the complete machine-readable "work that + uses the Library", as object code and/or source code, so that the + user can modify the Library and then relink to produce a modified + executable containing the modified Library. (It is understood + that the user who changes the contents of definitions files in the + Library will not necessarily be able to recompile the application + to use the modified definitions.) + + b) Use a suitable shared library mechanism for linking with the + Library. A suitable mechanism is one that (1) uses at run time a + copy of the library already present on the user's computer system, + rather than copying library functions into the executable, and (2) + will operate properly with a modified version of the library, if + the user installs one, as long as the modified version is + interface-compatible with the version that the work was made with. + + c) Accompany the work with a written offer, valid for at + least three years, to give the same user the materials + specified in Subsection 6a, above, for a charge no more + than the cost of performing this distribution. + + d) If distribution of the work is made by offering access to copy + from a designated place, offer equivalent access to copy the above + specified materials from the same place. + + e) Verify that the user has already received a copy of these + materials or that you have already sent this user a copy. + + For an executable, the required form of the "work that uses the +Library" must include any data and utility programs needed for +reproducing the executable from it. However, as a special exception, +the materials to be distributed need not include anything that is +normally distributed (in either source or binary form) with the major +components (compiler, kernel, and so on) of the operating system on +which the executable runs, unless that component itself accompanies +the executable. + + It may happen that this requirement contradicts the license +restrictions of other proprietary libraries that do not normally +accompany the operating system. Such a contradiction means you cannot +use both them and the Library together in an executable that you +distribute. + + 7. You may place library facilities that are a work based on the +Library side-by-side in a single library together with other library +facilities not covered by this License, and distribute such a combined +library, provided that the separate distribution of the work based on +the Library and of the other library facilities is otherwise +permitted, and provided that you do these two things: + + a) Accompany the combined library with a copy of the same work + based on the Library, uncombined with any other library + facilities. This must be distributed under the terms of the + Sections above. + + b) Give prominent notice with the combined library of the fact + that part of it is a work based on the Library, and explaining + where to find the accompanying uncombined form of the same work. + + 8. You may not copy, modify, sublicense, link with, or distribute +the Library except as expressly provided under this License. Any +attempt otherwise to copy, modify, sublicense, link with, or +distribute the Library is void, and will automatically terminate your +rights under this License. However, parties who have received copies, +or rights, from you under this License will not have their licenses +terminated so long as such parties remain in full compliance. + + 9. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Library or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Library (or any work based on the +Library), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Library or works based on it. + + 10. Each time you redistribute the Library (or any work based on the +Library), the recipient automatically receives a license from the +original licensor to copy, distribute, link with or modify the Library +subject to these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties with +this License. + + 11. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Library at all. For example, if a patent +license would not permit royalty-free redistribution of the Library by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Library. + +If any portion of this section is held invalid or unenforceable under any +particular circumstance, the balance of the section is intended to apply, +and the section as a whole is intended to apply in other circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 12. If the distribution and/or use of the Library is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Library under this License may add +an explicit geographical distribution limitation excluding those countries, +so that distribution is permitted only in or among countries not thus +excluded. In such case, this License incorporates the limitation as if +written in the body of this License. + + 13. The Free Software Foundation may publish revised and/or new +versions of the Lesser General Public License from time to time. +Such new versions will be similar in spirit to the present version, +but may differ in detail to address new problems or concerns. + +Each version is given a distinguishing version number. If the Library +specifies a version number of this License which applies to it and +"any later version", you have the option of following the terms and +conditions either of that version or of any later version published by +the Free Software Foundation. If the Library does not specify a +license version number, you may choose any version ever published by +the Free Software Foundation. + + 14. If you wish to incorporate parts of the Library into other free +programs whose distribution conditions are incompatible with these, +write to the author to ask for permission. For software which is +copyrighted by the Free Software Foundation, write to the Free +Software Foundation; we sometimes make exceptions for this. Our +decision will be guided by the two goals of preserving the free status +of all derivatives of our free software and of promoting the sharing +and reuse of software generally. + + NO WARRANTY + + 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO +WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. +EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR +OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY +KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE +LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME +THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN +WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY +AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU +FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR +CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE +LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING +RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A +FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF +SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH +DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Libraries + + If you develop a new library, and you want it to be of the greatest +possible use to the public, we recommend making it free software that +everyone can redistribute and change. You can do so by permitting +redistribution under these terms (or, alternatively, under the terms of the +ordinary General Public License). + + To apply these terms, attach the following notices to the library. It is +safest to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least the +"copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, see . + +Also add information on how to contact you by electronic and paper mail. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the library, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the + library `Frob' (a library for tweaking knobs) written by James Random Hacker. + + , 1 April 1990 + Moe Ghoul, President of Vice + +That's all there is to it! diff --git a/third_party/ofxMarchingCubes/README.md b/third_party/ofxMarchingCubes/README.md new file mode 100644 index 0000000..bfbf602 --- /dev/null +++ b/third_party/ofxMarchingCubes/README.md @@ -0,0 +1,29 @@ +# ofxMarchingCubes + +This directory vendors the `src` directory from +[atduskgreg/ofxMarchingCubes](https://github.com/atduskgreg/ofxMarchingCubes) +at commit `4e54316b7c5eb7637e78934557c4236bea6a78a6` so that the historical +`marching-cubes` example remains reproducible after the original Google Code +download disappeared. + +The implementation is Copyright (c) 2009 Rui Madeira and is distributed under +the GNU Lesser General Public License, version 2.1 or later. The complete +license notice is retained at the top of every vendored source file, and the +full terms are included in [`LICENSE.txt`](LICENSE.txt). Greg Borenstein +adapted the original code for openFrameworks 0.0071. + +All four source files carry dated modification notices. Source formatting has +also been normalized in this maintained copy. + +This is a locally maintained vendored copy rather than an unmodified upstream +snapshot. It makes the unused STL exporter integration opt-in with +`OFX_MARCHING_CUBES_ENABLE_STL`, so the example does not require the separate +historical `ofxSTL` addon. It also includes lifecycle and grid-boundary guards, +finite metaball handling, a correction to equal-value vertex interpolation, +and current openFrameworks drawing/vector API calls. These maintenance changes +preserve the upstream copyright and LGPL terms. + +Upstream provenance: + +- +- diff --git a/third_party/ofxMarchingCubes/src/Tables.h b/third_party/ofxMarchingCubes/src/Tables.h new file mode 100644 index 0000000..f9a3959 --- /dev/null +++ b/third_party/ofxMarchingCubes/src/Tables.h @@ -0,0 +1,317 @@ +/* + * Copyright (c) 2009, Rui Madeira + * Modified 2026-09-05 by Daito Manabe to normalize source formatting; + * see ../README.md. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * http://creativecommons.org/licenses/LGPL/2.1/ + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#pragma once + +static int edgeTable[256] = { +0x0 , 0x109, 0x203, 0x30a, 0x406, 0x50f, 0x605, 0x70c, +0x80c, 0x905, 0xa0f, 0xb06, 0xc0a, 0xd03, 0xe09, 0xf00, +0x190, 0x99 , 0x393, 0x29a, 0x596, 0x49f, 0x795, 0x69c, +0x99c, 0x895, 0xb9f, 0xa96, 0xd9a, 0xc93, 0xf99, 0xe90, +0x230, 0x339, 0x33 , 0x13a, 0x636, 0x73f, 0x435, 0x53c, +0xa3c, 0xb35, 0x83f, 0x936, 0xe3a, 0xf33, 0xc39, 0xd30, +0x3a0, 0x2a9, 0x1a3, 0xaa , 0x7a6, 0x6af, 0x5a5, 0x4ac, +0xbac, 0xaa5, 0x9af, 0x8a6, 0xfaa, 0xea3, 0xda9, 0xca0, +0x460, 0x569, 0x663, 0x76a, 0x66 , 0x16f, 0x265, 0x36c, +0xc6c, 0xd65, 0xe6f, 0xf66, 0x86a, 0x963, 0xa69, 0xb60, +0x5f0, 0x4f9, 0x7f3, 0x6fa, 0x1f6, 0xff , 0x3f5, 0x2fc, +0xdfc, 0xcf5, 0xfff, 0xef6, 0x9fa, 0x8f3, 0xbf9, 0xaf0, +0x650, 0x759, 0x453, 0x55a, 0x256, 0x35f, 0x55 , 0x15c, +0xe5c, 0xf55, 0xc5f, 0xd56, 0xa5a, 0xb53, 0x859, 0x950, +0x7c0, 0x6c9, 0x5c3, 0x4ca, 0x3c6, 0x2cf, 0x1c5, 0xcc , +0xfcc, 0xec5, 0xdcf, 0xcc6, 0xbca, 0xac3, 0x9c9, 0x8c0, +0x8c0, 0x9c9, 0xac3, 0xbca, 0xcc6, 0xdcf, 0xec5, 0xfcc, +0xcc , 0x1c5, 0x2cf, 0x3c6, 0x4ca, 0x5c3, 0x6c9, 0x7c0, +0x950, 0x859, 0xb53, 0xa5a, 0xd56, 0xc5f, 0xf55, 0xe5c, +0x15c, 0x55 , 0x35f, 0x256, 0x55a, 0x453, 0x759, 0x650, +0xaf0, 0xbf9, 0x8f3, 0x9fa, 0xef6, 0xfff, 0xcf5, 0xdfc, +0x2fc, 0x3f5, 0xff , 0x1f6, 0x6fa, 0x7f3, 0x4f9, 0x5f0, +0xb60, 0xa69, 0x963, 0x86a, 0xf66, 0xe6f, 0xd65, 0xc6c, +0x36c, 0x265, 0x16f, 0x66 , 0x76a, 0x663, 0x569, 0x460, +0xca0, 0xda9, 0xea3, 0xfaa, 0x8a6, 0x9af, 0xaa5, 0xbac, +0x4ac, 0x5a5, 0x6af, 0x7a6, 0xaa , 0x1a3, 0x2a9, 0x3a0, +0xd30, 0xc39, 0xf33, 0xe3a, 0x936, 0x83f, 0xb35, 0xa3c, +0x53c, 0x435, 0x73f, 0x636, 0x13a, 0x33 , 0x339, 0x230, +0xe90, 0xf99, 0xc93, 0xd9a, 0xa96, 0xb9f, 0x895, 0x99c, +0x69c, 0x795, 0x49f, 0x596, 0x29a, 0x393, 0x99 , 0x190, +0xf00, 0xe09, 0xd03, 0xc0a, 0xb06, 0xa0f, 0x905, 0x80c, +0x70c, 0x605, 0x50f, 0x406, 0x30a, 0x203, 0x109, 0x0 +}; + +static int triTable[256][16] ={ +{-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, +{0, 8, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, +{0, 1, 9, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, +{1, 8, 3, 9, 8, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, +{1, 2, 10, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, +{0, 8, 3, 1, 2, 10, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, +{9, 2, 10, 0, 2, 9, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, +{2, 8, 3, 2, 10, 8, 10, 9, 8, -1, -1, -1, -1, -1, -1, -1}, +{3, 11, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, +{0, 11, 2, 8, 11, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, +{1, 9, 0, 2, 3, 11, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, +{1, 11, 2, 1, 9, 11, 9, 8, 11, -1, -1, -1, -1, -1, -1, -1}, +{3, 10, 1, 11, 10, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, +{0, 10, 1, 0, 8, 10, 8, 11, 10, -1, -1, -1, -1, -1, -1, -1}, +{3, 9, 0, 3, 11, 9, 11, 10, 9, -1, -1, -1, -1, -1, -1, -1}, +{9, 8, 10, 10, 8, 11, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, +{4, 7, 8, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, +{4, 3, 0, 7, 3, 4, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, +{0, 1, 9, 8, 4, 7, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, +{4, 1, 9, 4, 7, 1, 7, 3, 1, -1, -1, -1, -1, -1, -1, -1}, +{1, 2, 10, 8, 4, 7, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, +{3, 4, 7, 3, 0, 4, 1, 2, 10, -1, -1, -1, -1, -1, -1, -1}, +{9, 2, 10, 9, 0, 2, 8, 4, 7, -1, -1, -1, -1, -1, -1, -1}, +{2, 10, 9, 2, 9, 7, 2, 7, 3, 7, 9, 4, -1, -1, -1, -1}, +{8, 4, 7, 3, 11, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, +{11, 4, 7, 11, 2, 4, 2, 0, 4, -1, -1, -1, -1, -1, -1, -1}, +{9, 0, 1, 8, 4, 7, 2, 3, 11, -1, -1, -1, -1, -1, -1, -1}, +{4, 7, 11, 9, 4, 11, 9, 11, 2, 9, 2, 1, -1, -1, -1, -1}, +{3, 10, 1, 3, 11, 10, 7, 8, 4, -1, -1, -1, -1, -1, -1, -1}, +{1, 11, 10, 1, 4, 11, 1, 0, 4, 7, 11, 4, -1, -1, -1, -1}, +{4, 7, 8, 9, 0, 11, 9, 11, 10, 11, 0, 3, -1, -1, -1, -1}, +{4, 7, 11, 4, 11, 9, 9, 11, 10, -1, -1, -1, -1, -1, -1, -1}, +{9, 5, 4, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, +{9, 5, 4, 0, 8, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, +{0, 5, 4, 1, 5, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, +{8, 5, 4, 8, 3, 5, 3, 1, 5, -1, -1, -1, -1, -1, -1, -1}, +{1, 2, 10, 9, 5, 4, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, +{3, 0, 8, 1, 2, 10, 4, 9, 5, -1, -1, -1, -1, -1, -1, -1}, +{5, 2, 10, 5, 4, 2, 4, 0, 2, -1, -1, -1, -1, -1, -1, -1}, +{2, 10, 5, 3, 2, 5, 3, 5, 4, 3, 4, 8, -1, -1, -1, -1}, +{9, 5, 4, 2, 3, 11, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, +{0, 11, 2, 0, 8, 11, 4, 9, 5, -1, -1, -1, -1, -1, -1, -1}, +{0, 5, 4, 0, 1, 5, 2, 3, 11, -1, -1, -1, -1, -1, -1, -1}, +{2, 1, 5, 2, 5, 8, 2, 8, 11, 4, 8, 5, -1, -1, -1, -1}, +{10, 3, 11, 10, 1, 3, 9, 5, 4, -1, -1, -1, -1, -1, -1, -1}, +{4, 9, 5, 0, 8, 1, 8, 10, 1, 8, 11, 10, -1, -1, -1, -1}, +{5, 4, 0, 5, 0, 11, 5, 11, 10, 11, 0, 3, -1, -1, -1, -1}, +{5, 4, 8, 5, 8, 10, 10, 8, 11, -1, -1, -1, -1, -1, -1, -1}, +{9, 7, 8, 5, 7, 9, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, +{9, 3, 0, 9, 5, 3, 5, 7, 3, -1, -1, -1, -1, -1, -1, -1}, +{0, 7, 8, 0, 1, 7, 1, 5, 7, -1, -1, -1, -1, -1, -1, -1}, +{1, 5, 3, 3, 5, 7, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, +{9, 7, 8, 9, 5, 7, 10, 1, 2, -1, -1, -1, -1, -1, -1, -1}, +{10, 1, 2, 9, 5, 0, 5, 3, 0, 5, 7, 3, -1, -1, -1, -1}, +{8, 0, 2, 8, 2, 5, 8, 5, 7, 10, 5, 2, -1, -1, -1, -1}, +{2, 10, 5, 2, 5, 3, 3, 5, 7, -1, -1, -1, -1, -1, -1, -1}, +{7, 9, 5, 7, 8, 9, 3, 11, 2, -1, -1, -1, -1, -1, -1, -1}, +{9, 5, 7, 9, 7, 2, 9, 2, 0, 2, 7, 11, -1, -1, -1, -1}, +{2, 3, 11, 0, 1, 8, 1, 7, 8, 1, 5, 7, -1, -1, -1, -1}, +{11, 2, 1, 11, 1, 7, 7, 1, 5, -1, -1, -1, -1, -1, -1, -1}, +{9, 5, 8, 8, 5, 7, 10, 1, 3, 10, 3, 11, -1, -1, -1, -1}, +{5, 7, 0, 5, 0, 9, 7, 11, 0, 1, 0, 10, 11, 10, 0, -1}, +{11, 10, 0, 11, 0, 3, 10, 5, 0, 8, 0, 7, 5, 7, 0, -1}, +{11, 10, 5, 7, 11, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, +{10, 6, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, +{0, 8, 3, 5, 10, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, +{9, 0, 1, 5, 10, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, +{1, 8, 3, 1, 9, 8, 5, 10, 6, -1, -1, -1, -1, -1, -1, -1}, +{1, 6, 5, 2, 6, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, +{1, 6, 5, 1, 2, 6, 3, 0, 8, -1, -1, -1, -1, -1, -1, -1}, +{9, 6, 5, 9, 0, 6, 0, 2, 6, -1, -1, -1, -1, -1, -1, -1}, +{5, 9, 8, 5, 8, 2, 5, 2, 6, 3, 2, 8, -1, -1, -1, -1}, +{2, 3, 11, 10, 6, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, +{11, 0, 8, 11, 2, 0, 10, 6, 5, -1, -1, -1, -1, -1, -1, -1}, +{0, 1, 9, 2, 3, 11, 5, 10, 6, -1, -1, -1, -1, -1, -1, -1}, +{5, 10, 6, 1, 9, 2, 9, 11, 2, 9, 8, 11, -1, -1, -1, -1}, +{6, 3, 11, 6, 5, 3, 5, 1, 3, -1, -1, -1, -1, -1, -1, -1}, +{0, 8, 11, 0, 11, 5, 0, 5, 1, 5, 11, 6, -1, -1, -1, -1}, +{3, 11, 6, 0, 3, 6, 0, 6, 5, 0, 5, 9, -1, -1, -1, -1}, +{6, 5, 9, 6, 9, 11, 11, 9, 8, -1, -1, -1, -1, -1, -1, -1}, +{5, 10, 6, 4, 7, 8, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, +{4, 3, 0, 4, 7, 3, 6, 5, 10, -1, -1, -1, -1, -1, -1, -1}, +{1, 9, 0, 5, 10, 6, 8, 4, 7, -1, -1, -1, -1, -1, -1, -1}, +{10, 6, 5, 1, 9, 7, 1, 7, 3, 7, 9, 4, -1, -1, -1, -1}, +{6, 1, 2, 6, 5, 1, 4, 7, 8, -1, -1, -1, -1, -1, -1, -1}, +{1, 2, 5, 5, 2, 6, 3, 0, 4, 3, 4, 7, -1, -1, -1, -1}, +{8, 4, 7, 9, 0, 5, 0, 6, 5, 0, 2, 6, -1, -1, -1, -1}, +{7, 3, 9, 7, 9, 4, 3, 2, 9, 5, 9, 6, 2, 6, 9, -1}, +{3, 11, 2, 7, 8, 4, 10, 6, 5, -1, -1, -1, -1, -1, -1, -1}, +{5, 10, 6, 4, 7, 2, 4, 2, 0, 2, 7, 11, -1, -1, -1, -1}, +{0, 1, 9, 4, 7, 8, 2, 3, 11, 5, 10, 6, -1, -1, -1, -1}, +{9, 2, 1, 9, 11, 2, 9, 4, 11, 7, 11, 4, 5, 10, 6, -1}, +{8, 4, 7, 3, 11, 5, 3, 5, 1, 5, 11, 6, -1, -1, -1, -1}, +{5, 1, 11, 5, 11, 6, 1, 0, 11, 7, 11, 4, 0, 4, 11, -1}, +{0, 5, 9, 0, 6, 5, 0, 3, 6, 11, 6, 3, 8, 4, 7, -1}, +{6, 5, 9, 6, 9, 11, 4, 7, 9, 7, 11, 9, -1, -1, -1, -1}, +{10, 4, 9, 6, 4, 10, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, +{4, 10, 6, 4, 9, 10, 0, 8, 3, -1, -1, -1, -1, -1, -1, -1}, +{10, 0, 1, 10, 6, 0, 6, 4, 0, -1, -1, -1, -1, -1, -1, -1}, +{8, 3, 1, 8, 1, 6, 8, 6, 4, 6, 1, 10, -1, -1, -1, -1}, +{1, 4, 9, 1, 2, 4, 2, 6, 4, -1, -1, -1, -1, -1, -1, -1}, +{3, 0, 8, 1, 2, 9, 2, 4, 9, 2, 6, 4, -1, -1, -1, -1}, +{0, 2, 4, 4, 2, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, +{8, 3, 2, 8, 2, 4, 4, 2, 6, -1, -1, -1, -1, -1, -1, -1}, +{10, 4, 9, 10, 6, 4, 11, 2, 3, -1, -1, -1, -1, -1, -1, -1}, +{0, 8, 2, 2, 8, 11, 4, 9, 10, 4, 10, 6, -1, -1, -1, -1}, +{3, 11, 2, 0, 1, 6, 0, 6, 4, 6, 1, 10, -1, -1, -1, -1}, +{6, 4, 1, 6, 1, 10, 4, 8, 1, 2, 1, 11, 8, 11, 1, -1}, +{9, 6, 4, 9, 3, 6, 9, 1, 3, 11, 6, 3, -1, -1, -1, -1}, +{8, 11, 1, 8, 1, 0, 11, 6, 1, 9, 1, 4, 6, 4, 1, -1}, +{3, 11, 6, 3, 6, 0, 0, 6, 4, -1, -1, -1, -1, -1, -1, -1}, +{6, 4, 8, 11, 6, 8, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, +{7, 10, 6, 7, 8, 10, 8, 9, 10, -1, -1, -1, -1, -1, -1, -1}, +{0, 7, 3, 0, 10, 7, 0, 9, 10, 6, 7, 10, -1, -1, -1, -1}, +{10, 6, 7, 1, 10, 7, 1, 7, 8, 1, 8, 0, -1, -1, -1, -1}, +{10, 6, 7, 10, 7, 1, 1, 7, 3, -1, -1, -1, -1, -1, -1, -1}, +{1, 2, 6, 1, 6, 8, 1, 8, 9, 8, 6, 7, -1, -1, -1, -1}, +{2, 6, 9, 2, 9, 1, 6, 7, 9, 0, 9, 3, 7, 3, 9, -1}, +{7, 8, 0, 7, 0, 6, 6, 0, 2, -1, -1, -1, -1, -1, -1, -1}, +{7, 3, 2, 6, 7, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, +{2, 3, 11, 10, 6, 8, 10, 8, 9, 8, 6, 7, -1, -1, -1, -1}, +{2, 0, 7, 2, 7, 11, 0, 9, 7, 6, 7, 10, 9, 10, 7, -1}, +{1, 8, 0, 1, 7, 8, 1, 10, 7, 6, 7, 10, 2, 3, 11, -1}, +{11, 2, 1, 11, 1, 7, 10, 6, 1, 6, 7, 1, -1, -1, -1, -1}, +{8, 9, 6, 8, 6, 7, 9, 1, 6, 11, 6, 3, 1, 3, 6, -1}, +{0, 9, 1, 11, 6, 7, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, +{7, 8, 0, 7, 0, 6, 3, 11, 0, 11, 6, 0, -1, -1, -1, -1}, +{7, 11, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, +{7, 6, 11, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, +{3, 0, 8, 11, 7, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, +{0, 1, 9, 11, 7, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, +{8, 1, 9, 8, 3, 1, 11, 7, 6, -1, -1, -1, -1, -1, -1, -1}, +{10, 1, 2, 6, 11, 7, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, +{1, 2, 10, 3, 0, 8, 6, 11, 7, -1, -1, -1, -1, -1, -1, -1}, +{2, 9, 0, 2, 10, 9, 6, 11, 7, -1, -1, -1, -1, -1, -1, -1}, +{6, 11, 7, 2, 10, 3, 10, 8, 3, 10, 9, 8, -1, -1, -1, -1}, +{7, 2, 3, 6, 2, 7, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, +{7, 0, 8, 7, 6, 0, 6, 2, 0, -1, -1, -1, -1, -1, -1, -1}, +{2, 7, 6, 2, 3, 7, 0, 1, 9, -1, -1, -1, -1, -1, -1, -1}, +{1, 6, 2, 1, 8, 6, 1, 9, 8, 8, 7, 6, -1, -1, -1, -1}, +{10, 7, 6, 10, 1, 7, 1, 3, 7, -1, -1, -1, -1, -1, -1, -1}, +{10, 7, 6, 1, 7, 10, 1, 8, 7, 1, 0, 8, -1, -1, -1, -1}, +{0, 3, 7, 0, 7, 10, 0, 10, 9, 6, 10, 7, -1, -1, -1, -1}, +{7, 6, 10, 7, 10, 8, 8, 10, 9, -1, -1, -1, -1, -1, -1, -1}, +{6, 8, 4, 11, 8, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, +{3, 6, 11, 3, 0, 6, 0, 4, 6, -1, -1, -1, -1, -1, -1, -1}, +{8, 6, 11, 8, 4, 6, 9, 0, 1, -1, -1, -1, -1, -1, -1, -1}, +{9, 4, 6, 9, 6, 3, 9, 3, 1, 11, 3, 6, -1, -1, -1, -1}, +{6, 8, 4, 6, 11, 8, 2, 10, 1, -1, -1, -1, -1, -1, -1, -1}, +{1, 2, 10, 3, 0, 11, 0, 6, 11, 0, 4, 6, -1, -1, -1, -1}, +{4, 11, 8, 4, 6, 11, 0, 2, 9, 2, 10, 9, -1, -1, -1, -1}, +{10, 9, 3, 10, 3, 2, 9, 4, 3, 11, 3, 6, 4, 6, 3, -1}, +{8, 2, 3, 8, 4, 2, 4, 6, 2, -1, -1, -1, -1, -1, -1, -1}, +{0, 4, 2, 4, 6, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, +{1, 9, 0, 2, 3, 4, 2, 4, 6, 4, 3, 8, -1, -1, -1, -1}, +{1, 9, 4, 1, 4, 2, 2, 4, 6, -1, -1, -1, -1, -1, -1, -1}, +{8, 1, 3, 8, 6, 1, 8, 4, 6, 6, 10, 1, -1, -1, -1, -1}, +{10, 1, 0, 10, 0, 6, 6, 0, 4, -1, -1, -1, -1, -1, -1, -1}, +{4, 6, 3, 4, 3, 8, 6, 10, 3, 0, 3, 9, 10, 9, 3, -1}, +{10, 9, 4, 6, 10, 4, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, +{4, 9, 5, 7, 6, 11, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, +{0, 8, 3, 4, 9, 5, 11, 7, 6, -1, -1, -1, -1, -1, -1, -1}, +{5, 0, 1, 5, 4, 0, 7, 6, 11, -1, -1, -1, -1, -1, -1, -1}, +{11, 7, 6, 8, 3, 4, 3, 5, 4, 3, 1, 5, -1, -1, -1, -1}, +{9, 5, 4, 10, 1, 2, 7, 6, 11, -1, -1, -1, -1, -1, -1, -1}, +{6, 11, 7, 1, 2, 10, 0, 8, 3, 4, 9, 5, -1, -1, -1, -1}, +{7, 6, 11, 5, 4, 10, 4, 2, 10, 4, 0, 2, -1, -1, -1, -1}, +{3, 4, 8, 3, 5, 4, 3, 2, 5, 10, 5, 2, 11, 7, 6, -1}, +{7, 2, 3, 7, 6, 2, 5, 4, 9, -1, -1, -1, -1, -1, -1, -1}, +{9, 5, 4, 0, 8, 6, 0, 6, 2, 6, 8, 7, -1, -1, -1, -1}, +{3, 6, 2, 3, 7, 6, 1, 5, 0, 5, 4, 0, -1, -1, -1, -1}, +{6, 2, 8, 6, 8, 7, 2, 1, 8, 4, 8, 5, 1, 5, 8, -1}, +{9, 5, 4, 10, 1, 6, 1, 7, 6, 1, 3, 7, -1, -1, -1, -1}, +{1, 6, 10, 1, 7, 6, 1, 0, 7, 8, 7, 0, 9, 5, 4, -1}, +{4, 0, 10, 4, 10, 5, 0, 3, 10, 6, 10, 7, 3, 7, 10, -1}, +{7, 6, 10, 7, 10, 8, 5, 4, 10, 4, 8, 10, -1, -1, -1, -1}, +{6, 9, 5, 6, 11, 9, 11, 8, 9, -1, -1, -1, -1, -1, -1, -1}, +{3, 6, 11, 0, 6, 3, 0, 5, 6, 0, 9, 5, -1, -1, -1, -1}, +{0, 11, 8, 0, 5, 11, 0, 1, 5, 5, 6, 11, -1, -1, -1, -1}, +{6, 11, 3, 6, 3, 5, 5, 3, 1, -1, -1, -1, -1, -1, -1, -1}, +{1, 2, 10, 9, 5, 11, 9, 11, 8, 11, 5, 6, -1, -1, -1, -1}, +{0, 11, 3, 0, 6, 11, 0, 9, 6, 5, 6, 9, 1, 2, 10, -1}, +{11, 8, 5, 11, 5, 6, 8, 0, 5, 10, 5, 2, 0, 2, 5, -1}, +{6, 11, 3, 6, 3, 5, 2, 10, 3, 10, 5, 3, -1, -1, -1, -1}, +{5, 8, 9, 5, 2, 8, 5, 6, 2, 3, 8, 2, -1, -1, -1, -1}, +{9, 5, 6, 9, 6, 0, 0, 6, 2, -1, -1, -1, -1, -1, -1, -1}, +{1, 5, 8, 1, 8, 0, 5, 6, 8, 3, 8, 2, 6, 2, 8, -1}, +{1, 5, 6, 2, 1, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, +{1, 3, 6, 1, 6, 10, 3, 8, 6, 5, 6, 9, 8, 9, 6, -1}, +{10, 1, 0, 10, 0, 6, 9, 5, 0, 5, 6, 0, -1, -1, -1, -1}, +{0, 3, 8, 5, 6, 10, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, +{10, 5, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, +{11, 5, 10, 7, 5, 11, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, +{11, 5, 10, 11, 7, 5, 8, 3, 0, -1, -1, -1, -1, -1, -1, -1}, +{5, 11, 7, 5, 10, 11, 1, 9, 0, -1, -1, -1, -1, -1, -1, -1}, +{10, 7, 5, 10, 11, 7, 9, 8, 1, 8, 3, 1, -1, -1, -1, -1}, +{11, 1, 2, 11, 7, 1, 7, 5, 1, -1, -1, -1, -1, -1, -1, -1}, +{0, 8, 3, 1, 2, 7, 1, 7, 5, 7, 2, 11, -1, -1, -1, -1}, +{9, 7, 5, 9, 2, 7, 9, 0, 2, 2, 11, 7, -1, -1, -1, -1}, +{7, 5, 2, 7, 2, 11, 5, 9, 2, 3, 2, 8, 9, 8, 2, -1}, +{2, 5, 10, 2, 3, 5, 3, 7, 5, -1, -1, -1, -1, -1, -1, -1}, +{8, 2, 0, 8, 5, 2, 8, 7, 5, 10, 2, 5, -1, -1, -1, -1}, +{9, 0, 1, 5, 10, 3, 5, 3, 7, 3, 10, 2, -1, -1, -1, -1}, +{9, 8, 2, 9, 2, 1, 8, 7, 2, 10, 2, 5, 7, 5, 2, -1}, +{1, 3, 5, 3, 7, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, +{0, 8, 7, 0, 7, 1, 1, 7, 5, -1, -1, -1, -1, -1, -1, -1}, +{9, 0, 3, 9, 3, 5, 5, 3, 7, -1, -1, -1, -1, -1, -1, -1}, +{9, 8, 7, 5, 9, 7, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, +{5, 8, 4, 5, 10, 8, 10, 11, 8, -1, -1, -1, -1, -1, -1, -1}, +{5, 0, 4, 5, 11, 0, 5, 10, 11, 11, 3, 0, -1, -1, -1, -1}, +{0, 1, 9, 8, 4, 10, 8, 10, 11, 10, 4, 5, -1, -1, -1, -1}, +{10, 11, 4, 10, 4, 5, 11, 3, 4, 9, 4, 1, 3, 1, 4, -1}, +{2, 5, 1, 2, 8, 5, 2, 11, 8, 4, 5, 8, -1, -1, -1, -1}, +{0, 4, 11, 0, 11, 3, 4, 5, 11, 2, 11, 1, 5, 1, 11, -1}, +{0, 2, 5, 0, 5, 9, 2, 11, 5, 4, 5, 8, 11, 8, 5, -1}, +{9, 4, 5, 2, 11, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, +{2, 5, 10, 3, 5, 2, 3, 4, 5, 3, 8, 4, -1, -1, -1, -1}, +{5, 10, 2, 5, 2, 4, 4, 2, 0, -1, -1, -1, -1, -1, -1, -1}, +{3, 10, 2, 3, 5, 10, 3, 8, 5, 4, 5, 8, 0, 1, 9, -1}, +{5, 10, 2, 5, 2, 4, 1, 9, 2, 9, 4, 2, -1, -1, -1, -1}, +{8, 4, 5, 8, 5, 3, 3, 5, 1, -1, -1, -1, -1, -1, -1, -1}, +{0, 4, 5, 1, 0, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, +{8, 4, 5, 8, 5, 3, 9, 0, 5, 0, 3, 5, -1, -1, -1, -1}, +{9, 4, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, +{4, 11, 7, 4, 9, 11, 9, 10, 11, -1, -1, -1, -1, -1, -1, -1}, +{0, 8, 3, 4, 9, 7, 9, 11, 7, 9, 10, 11, -1, -1, -1, -1}, +{1, 10, 11, 1, 11, 4, 1, 4, 0, 7, 4, 11, -1, -1, -1, -1}, +{3, 1, 4, 3, 4, 8, 1, 10, 4, 7, 4, 11, 10, 11, 4, -1}, +{4, 11, 7, 9, 11, 4, 9, 2, 11, 9, 1, 2, -1, -1, -1, -1}, +{9, 7, 4, 9, 11, 7, 9, 1, 11, 2, 11, 1, 0, 8, 3, -1}, +{11, 7, 4, 11, 4, 2, 2, 4, 0, -1, -1, -1, -1, -1, -1, -1}, +{11, 7, 4, 11, 4, 2, 8, 3, 4, 3, 2, 4, -1, -1, -1, -1}, +{2, 9, 10, 2, 7, 9, 2, 3, 7, 7, 4, 9, -1, -1, -1, -1}, +{9, 10, 7, 9, 7, 4, 10, 2, 7, 8, 7, 0, 2, 0, 7, -1}, +{3, 7, 10, 3, 10, 2, 7, 4, 10, 1, 10, 0, 4, 0, 10, -1}, +{1, 10, 2, 8, 7, 4, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, +{4, 9, 1, 4, 1, 7, 7, 1, 3, -1, -1, -1, -1, -1, -1, -1}, +{4, 9, 1, 4, 1, 7, 0, 8, 1, 8, 7, 1, -1, -1, -1, -1}, +{4, 0, 3, 7, 4, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, +{4, 8, 7, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, +{9, 10, 8, 10, 11, 8, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, +{3, 0, 9, 3, 9, 11, 11, 9, 10, -1, -1, -1, -1, -1, -1, -1}, +{0, 1, 10, 0, 10, 8, 8, 10, 11, -1, -1, -1, -1, -1, -1, -1}, +{3, 1, 10, 11, 3, 10, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, +{1, 2, 11, 1, 11, 9, 9, 11, 8, -1, -1, -1, -1, -1, -1, -1}, +{3, 0, 9, 3, 9, 11, 1, 2, 9, 2, 11, 9, -1, -1, -1, -1}, +{0, 2, 11, 8, 0, 11, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, +{3, 2, 11, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, +{2, 3, 8, 2, 8, 10, 10, 8, 9, -1, -1, -1, -1, -1, -1, -1}, +{9, 10, 2, 0, 9, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, +{2, 3, 8, 2, 8, 10, 0, 1, 8, 1, 10, 8, -1, -1, -1, -1}, +{1, 10, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, +{1, 3, 8, 9, 1, 8, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, +{0, 9, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, +{0, 3, 8, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, +{-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1} +}; diff --git a/third_party/ofxMarchingCubes/src/ofxMCTypes.h b/third_party/ofxMarchingCubes/src/ofxMCTypes.h new file mode 100644 index 0000000..583bd95 --- /dev/null +++ b/third_party/ofxMarchingCubes/src/ofxMCTypes.h @@ -0,0 +1,28 @@ +/* + * Copyright (c) 2009, Rui Madeira + * Modified 2026-09-05 by Daito Manabe to normalize source formatting; + * see ../README.md. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * http://creativecommons.org/licenses/LGPL/2.1/ + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#pragma once + +#include "ofMain.h" + +typedef vector > > ofxMCGridValues; +typedef vector > > ofxMCGridPoints; diff --git a/third_party/ofxMarchingCubes/src/ofxMarchingCubes.cpp b/third_party/ofxMarchingCubes/src/ofxMarchingCubes.cpp new file mode 100644 index 0000000..88026cd --- /dev/null +++ b/third_party/ofxMarchingCubes/src/ofxMarchingCubes.cpp @@ -0,0 +1,536 @@ +/* + * Copyright (c) 2009, Rui Madeira + * Modified 2026-09-05 by Daito Manabe for openFrameworks 0.12.1 + * compatibility and safety; see ../README.md. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * http://creativecommons.org/licenses/LGPL/2.1/ + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + + +#include "ofxMarchingCubes.h" + +ofxMarchingCubes::ofxMarchingCubes() + : gridResX(0) + , gridResY(0) + , gridResZ(0) + , numTriangles(0) + , threshold(0.0f) {} + +ofxMarchingCubes::~ofxMarchingCubes(){ + clear(); +} + +void ofxMarchingCubes::init(const ofPoint& _iniGridPos,const ofPoint& _gridSize, unsigned int _gridResX, unsigned int _gridResY,unsigned int _gridResZ){ + clear(); + iniGridPos = _iniGridPos; + gridResX = MAX(2, _gridResX); + gridResY = MAX(2, _gridResY); + gridResZ = MAX(2, _gridResZ); + gridSize = _gridSize; + setupGrid(); +} + +void ofxMarchingCubes::clear(){ + isoValues.clear(); + gridPoints.clear(); + vertices.clear(); + normals.clear(); + gridResX = 0; + gridResY = 0; + gridResZ = 0; + numTriangles = 0; +} + +void ofxMarchingCubes::update(float _threshold, bool bCalcNormals){ + threshold = _threshold; + numTriangles = 0; + vertices.clear(); + normals.clear(); + if (!isGridReady()) return; + const int numPointsX = gridResX - 1; + const int numPointsY = gridResY - 1; + const int numPointsZ = gridResZ - 1; + for(int i=0; i= gridResX or gridY >= gridResY or gridZ >= gridResZ){ + ofLogWarning("ofxMarchingCubes") << "setIsoValue: grid index out of bounds"; + return; + } + isoValues[gridX][gridY][gridZ] = value; +} + +float ofxMarchingCubes::getIsoValue(unsigned int gridX, unsigned int gridY, unsigned int gridZ){ + if(!isGridReady() || gridX >= gridResX or gridY >= gridResY or gridZ >= gridResZ){ + ofLogWarning("ofxMarchingCubes") + << "getIsoValue: grid index out of bounds; returning zero"; + return 0; + } + return isoValues[gridX][gridY][gridZ]; +} + +void ofxMarchingCubes::resetIsoValues(){ + if (!isGridReady()) return; + for(int i=0; i max){ + max = val; + } + } + } + } + return max; +} + +float ofxMarchingCubes::getMinIsoValue(){ + if(!isGridReady()) return 0.0f; + float min = isoValues[0][0][0]; + float val; + for(int i=0; i& ofxMarchingCubes::getVertices(){ + return vertices; +} + +vector& ofxMarchingCubes::getNormals(){ + return normals; +} + +ofxMCGridValues& ofxMarchingCubes::getIsoValues(){ + return isoValues; +} + +ofxMCGridPoints& ofxMarchingCubes::getGrid(){ + return gridPoints; +} + +void ofxMarchingCubes::setGridPos(const ofPoint& _gridPos){ + if(_gridPos.x == iniGridPos.x and _gridPos.y == iniGridPos.y and _gridPos.z == iniGridPos.z) return; + const int previousGridResX = gridResX; + const int previousGridResY = gridResY; + const int previousGridResZ = gridResZ; + clear(); + iniGridPos = _gridPos; + if (previousGridResX >= 2 && previousGridResY >= 2 && previousGridResZ >= 2) { + gridResX = previousGridResX; + gridResY = previousGridResY; + gridResZ = previousGridResZ; + setupGrid(); + } +} + +void ofxMarchingCubes::setGridSize(const ofPoint& _gridSize){ + if(_gridSize.x == gridSize.x and _gridSize.y == gridSize.y and _gridSize.z == gridSize.z)return; + const int previousGridResX = gridResX; + const int previousGridResY = gridResY; + const int previousGridResZ = gridResZ; + clear(); + gridSize = _gridSize; + if (previousGridResX >= 2 && previousGridResY >= 2 && previousGridResZ >= 2) { + gridResX = previousGridResX; + gridResY = previousGridResY; + gridResZ = previousGridResZ; + setupGrid(); + } +} + +void ofxMarchingCubes::setGridRes(unsigned int _gridResX, unsigned int _gridResY, unsigned int _gridResZ){ + if(_gridResX == gridResX and _gridResY == gridResY and _gridResZ == gridResZ)return; + clear(); + gridResX = MAX(2, _gridResX); + gridResY = MAX(2, _gridResY); + gridResZ = MAX(2, _gridResZ); + setupGrid(); +} + +ofPoint ofxMarchingCubes::getGridPos(){ + return iniGridPos; +} + +ofPoint ofxMarchingCubes::getGridSize(){ + return gridSize; +} + +ofPoint ofxMarchingCubes::getGridRes(){ + return ofPoint(gridResX, gridResY, gridResZ); +} + +#ifdef OFX_MARCHING_CUBES_ENABLE_STL +void ofxMarchingCubes::saveModel(string fileName, bool bUseASCII_mode){ + stlExporter.useASCIIFormat(bUseASCII_mode); + + int numVertices = vertices.size(); + for(int i=0; i(gridResX) + || gridPoints.size() != static_cast(gridResX)) { + return false; + } + for (int i = 0; i < gridResX; ++i) { + if (isoValues[i].size() != static_cast(gridResY) + || gridPoints[i].size() != static_cast(gridResY)) { + return false; + } + for (int j = 0; j < gridResY; ++j) { + if (isoValues[i][j].size() != static_cast(gridResZ) + || gridPoints[i][j].size() != static_cast(gridResZ)) { + return false; + } + } + } + return true; +} + +void ofxMarchingCubes::vertexInterp(float threshold,const ofPoint& p1,const ofPoint& p2, float valp1, float valp2, ofPoint& theVertice){ + float mu; + if (ABS(threshold-valp1) < 0.00001){ + theVertice.set(p1.x, p1.y, p1.z); + return; + } + if (ABS(threshold-valp2) < 0.00001){ + theVertice.set(p2.x, p2.y, p2.z); + return; + } + if (ABS(valp1-valp2) < 0.00001){ + theVertice.set(p1.x, p1.y, p1.z); + return; + } + mu = (threshold - valp1) / (valp2 - valp1); + theVertice.x = p1.x + mu * (p2.x - p1.x); + theVertice.y = p1.y + mu * (p2.y - p1.y); + theVertice.z = p1.z + mu * (p2.z - p1.z); +} + +void ofxMarchingCubes::polygonise(unsigned int i, unsigned int j, unsigned int k, bool bCalcNormals){ + int cubeindex; + + cubeindex = 0; + if (isoValues[i][j][k] < threshold) cubeindex |= 1; + if (isoValues[i+1][j][k] < threshold) cubeindex |= 2; + if (isoValues[i+1][j+1][k] < threshold) cubeindex |= 4; + if (isoValues[i][j+1][k] < threshold) cubeindex |= 8; + if (isoValues[i][j][k+1] < threshold) cubeindex |= 16; + if (isoValues[i+1][j][k+1] < threshold) cubeindex |= 32; + if (isoValues[i+1][j+1][k+1] < threshold) cubeindex |= 64; + if (isoValues[i][j+1][k+1] < threshold) cubeindex |= 128; + if (edgeTable[cubeindex] == 0){ + return; + } + + if (edgeTable[cubeindex] & 1){ + vertexInterp(threshold, gridPoints[i][j][k], gridPoints[i+1][j][k], isoValues[i][j][k] ,isoValues[i+1][j][k], vertList[0]); + } + if (edgeTable[cubeindex] & 2){ + vertexInterp(threshold, gridPoints[i+1][j][k], gridPoints[i+1][j+1][k], isoValues[i+1][j][k], isoValues[i+1][j+1][k], vertList[1]); + } + if (edgeTable[cubeindex] & 4){ + vertexInterp(threshold, gridPoints[i+1][j+1][k], gridPoints[i][j+1][k], isoValues[i+1][j+1][k], isoValues[i][j+1][k], vertList[2]); + } + if (edgeTable[cubeindex] & 8){ + vertexInterp(threshold, gridPoints[i][j+1][k], gridPoints[i][j][k], isoValues[i][j+1][k], isoValues[i][j][k], vertList[3]); + } + if (edgeTable[cubeindex] & 16){ + vertexInterp(threshold, gridPoints[i][j][k+1], gridPoints[i+1][j][k+1], isoValues[i][j][k+1], isoValues[i+1][j][k+1], vertList[4]); + } + if (edgeTable[cubeindex] & 32){ + vertexInterp(threshold, gridPoints[i+1][j][k+1], gridPoints[i+1][j+1][k+1], isoValues[i+1][j][k+1], isoValues[i+1][j+1][k+1], vertList[5]); + } + if (edgeTable[cubeindex] & 64){ + vertexInterp(threshold, gridPoints[i+1][j+1][k+1], gridPoints[i][j+1][k+1], isoValues[i+1][j+1][k+1], isoValues[i][j+1][k+1], vertList[6]); + } + if (edgeTable[cubeindex] & 128){ + vertexInterp(threshold, gridPoints[i][j+1][k+1], gridPoints[i][j][k+1], isoValues[i][j+1][k+1], isoValues[i][j][k+1], vertList[7]); + } + if (edgeTable[cubeindex] & 256){ + vertexInterp(threshold, gridPoints[i][j][k], gridPoints[i][j][k+1], isoValues[i][j][k], isoValues[i][j][k+1], vertList[8]); + } + if (edgeTable[cubeindex] & 512){ + vertexInterp(threshold, gridPoints[i+1][j][k], gridPoints[i+1][j][k+1], isoValues[i+1][j][k], isoValues[i+1][j][k+1], vertList[9]); + } + if (edgeTable[cubeindex] & 1024){ + vertexInterp(threshold, gridPoints[i+1][j+1][k], gridPoints[i+1][j+1][k+1], isoValues[i+1][j+1][k], isoValues[i+1][j+1][k+1], vertList[10]); + } + if (edgeTable[cubeindex] & 2048){ + vertexInterp(threshold, gridPoints[i][j+1][k], gridPoints[i][j+1][k+1], isoValues[i][j+1][k], isoValues[i][j+1][k+1], vertList[11]); + } + for (i=0;triTable[cubeindex][i]!=-1;i+=3) { + if(bCalcNormals){ + ofVec3f a = vertList[triTable[cubeindex][i+1]] - vertList[triTable[cubeindex][i]]; + ofVec3f b = vertList[triTable[cubeindex][i+2]] - vertList[triTable[cubeindex][i+1]]; + //cross product - a cross b + ofVec3f normalVec = a.getCrossed(b); + normalVec.normalize(); + normals.push_back(normalVec); + normals.push_back(normalVec); + normals.push_back(normalVec); + } + vertices.push_back(ofPoint(vertList[triTable[cubeindex][i]].x, vertList[triTable[cubeindex][i]].y, vertList[triTable[cubeindex][i]].z)); + vertices.push_back(ofPoint(vertList[triTable[cubeindex][i+1]].x, vertList[triTable[cubeindex][i+1]].y, vertList[triTable[cubeindex][i+1]].z)); + vertices.push_back(ofPoint(vertList[triTable[cubeindex][i+2]].x, vertList[triTable[cubeindex][i+2]].y, vertList[triTable[cubeindex][i+2]].z)); + numTriangles++; + } +} diff --git a/third_party/ofxMarchingCubes/src/ofxMarchingCubes.h b/third_party/ofxMarchingCubes/src/ofxMarchingCubes.h new file mode 100644 index 0000000..c850242 --- /dev/null +++ b/third_party/ofxMarchingCubes/src/ofxMarchingCubes.h @@ -0,0 +1,97 @@ +/* + * Copyright (c) 2009, Rui Madeira + * Modified 2026-09-05 by Daito Manabe for openFrameworks 0.12.1 + * compatibility and safety; see ../README.md. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * http://creativecommons.org/licenses/LGPL/2.1/ + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#pragma once + +#include "ofMain.h" +#include "Tables.h" +#include "ofxMCTypes.h" +#ifdef OFX_MARCHING_CUBES_ENABLE_STL +#include "ofxSTL.h" +#endif + +//marching cubes algorithm implementation based on the explanations and source in this page: http://local.wasp.uwa.edu.au/~pbourke/geometry/polygonise/ + +class ofxMarchingCubes{ +public: + ofxMarchingCubes(); + virtual ~ofxMarchingCubes(); + void init(const ofPoint& _iniGridPos, const ofPoint& gridSize, unsigned int _gridResX,unsigned int _gridResY,unsigned int _gridResZ); + void clear(); + void update(float _threshold, bool bCalcNormals = false); + virtual void draw(){debugDraw();} + void debugDraw(); + void drawWireFrame(); + void drawFilled(); + void drawCube(); + void drawGrid(); + void addMetaBall(const ofPoint& pos, float force); + void setIsoValue(unsigned int gridX, unsigned int gridY, unsigned int gridZ, float value); + float getIsoValue(unsigned int gridX, unsigned int gridY, unsigned int gridZ); + void resetIsoValues(); //set all values to 0 + float getMaxIsoValue(); + float getMinIsoValue(); + float getAverageIsoValue(); + void scaleIsoValues(float amount); //multiplies + void shiftIsoValues(float amount); //adds + void normalizeIsoValues(); + void rescaleIsoValues(float min, float max); + void absoluteValues(); + int getNumTriangles(); + float getThreshold(); + vector& getVertices(); + vector& getNormals(); + ofxMCGridValues& getIsoValues(); + ofxMCGridPoints& getGrid(); + void setGridPos(const ofPoint& _gridPos); + void setGridSize(const ofPoint& _gridSize); + void setGridRes(unsigned int gridResX, unsigned int gridResY, unsigned int gridResZ); + ofPoint getGridPos(); + ofPoint getGridSize(); + ofPoint getGridRes(); + + #ifdef OFX_MARCHING_CUBES_ENABLE_STL + void saveModel(string fileName, bool bUseASCII_mode = false); + ofxSTLExporter& getSTLExporter(); + #endif + +protected: + #ifdef OFX_MARCHING_CUBES_ENABLE_STL + ofxSTLExporter stlExporter; + #endif + void setupGrid(); + bool isGridReady() const; + int gridResX, gridResY, gridResZ; + ofPoint iniGridPos; + ofPoint gridSize; + int numTriangles; + float threshold; + vectorvertices; + vectornormals; + ofPoint vertList[12]; + + ofxMCGridValues isoValues; + ofxMCGridPoints gridPoints; + + void vertexInterp(float isoLevel,const ofPoint& p1, const ofPoint& p2, float valp1, float valp2, ofPoint& theVertice); + void polygonise(uint i, uint j, uint k, bool bCalcNormals); +};