diff --git a/.cargo/config b/.cargo/config
deleted file mode 100644
index ec26773..0000000
--- a/.cargo/config
+++ /dev/null
@@ -1,3 +0,0 @@
-[target.x86_64-unknown-linux-gnu]
-linker = "clang"
-rustflags = ["-Clink-arg=-fuse-ld=mold"]
\ No newline at end of file
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
new file mode 100644
index 0000000..1169192
--- /dev/null
+++ b/.github/workflows/ci.yml
@@ -0,0 +1,74 @@
+name: CI
+
+on:
+ pull_request:
+ push:
+
+jobs:
+ test:
+ strategy:
+ matrix:
+ os: [windows-latest, ubuntu-latest, macos-latest]
+ runs-on: ${{ matrix.os }}
+ steps:
+ - uses: actions/checkout@v3
+ - uses: actions/cache@v3
+ with:
+ path: |
+ ~/.cargo/bin/
+ ~/.cargo/registry/index/
+ ~/.cargo/registry/cache/
+ ~/.cargo/git/db/
+ target/
+ key: ${{ runner.os }}-cargo-test-${{ hashFiles('**/Cargo.toml') }}
+ - uses: dtolnay/rust-toolchain@master
+ with:
+ toolchain: stable
+ - name: Install alsa and udev
+ run: apt-get update; apt-get install --no-install-recommends -y libasound2-dev libudev-dev
+ if: runner.os == 'linux'
+ - name: Build & run tests
+ run: cargo test
+ all-doc-tests:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v3
+ - uses: actions/cache@v3
+ with:
+ path: |
+ ~/.cargo/bin/
+ ~/.cargo/registry/index/
+ ~/.cargo/registry/cache/
+ ~/.cargo/git/db/
+ target/
+ key: ubuntu-latest-cargo-all-doc-tests-${{ hashFiles('**/Cargo.toml') }}
+ - uses: dtolnay/rust-toolchain@master
+ with:
+ toolchain: stable
+ - name: Install alsa and udev
+ run: apt-get update; apt-get install --no-install-recommends -y libasound2-dev libudev-dev
+ - name: Run doc tests with all features (this also compiles README examples)
+ run: cargo test --doc --all-features
+ lint:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v3
+ - uses: actions/cache@v3
+ with:
+ path: |
+ ~/.cargo/bin/
+ ~/.cargo/registry/index/
+ ~/.cargo/registry/cache/
+ ~/.cargo/git/db/
+ target/
+ key: ubuntu-latest-cargo-lint-${{ hashFiles('**/Cargo.toml') }}
+ - uses: dtolnay/rust-toolchain@master
+ with:
+ toolchain: stable
+ components: rustfmt, clippy
+ - name: Install alsa and udev
+ run: apt-get update; apt-get install --no-install-recommends -y libasound2-dev libudev-dev
+ - name: Run clippy
+ run: cargo clippy --workspace --all-targets --all-features -- -Dwarnings
+ - name: Check format
+ run: cargo fmt --all -- --check
diff --git a/.github/workflows/deploy-page.yaml b/.github/workflows/deploy-page.yaml
new file mode 100644
index 0000000..6b35fce
--- /dev/null
+++ b/.github/workflows/deploy-page.yaml
@@ -0,0 +1,40 @@
+name: deploy-github-page
+
+on:
+ workflow_dispatch:
+
+permissions:
+ contents: write
+
+jobs:
+ build-web:
+ runs-on: ubuntu-latest
+
+ steps:
+ - name: Checkout repository
+ uses: actions/checkout@v3
+ - name: Install rust toolchain
+ uses: dtolnay/rust-toolchain@master
+ with:
+ toolchain: stable
+ - name: Install Dependencies
+ run: sudo apt-get update; sudo apt-get install pkg-config libx11-dev libasound2-dev libudev-dev
+ - name: Install trunk
+ uses: jetli/trunk-action@v0.4.0
+ with:
+ version: 'latest'
+ - name: Add wasm target
+ run: |
+ rustup target add wasm32-unknown-unknown
+ - name: Build Release
+ run: |
+ trunk build --release
+ - name: optimize Wasm
+ uses: NiklasEi/wasm-opt-action@v2
+ with:
+ file: dist/*.wasm
+ - name: Deploy to GitHub Pages
+ uses: JamesIves/github-pages-deploy-action@v4.2.5
+ with:
+ branch: gitea-pages
+ folder: dist
diff --git a/.github/workflows/release-android-google-play.yaml b/.github/workflows/release-android-google-play.yaml
new file mode 100644
index 0000000..23ca601
--- /dev/null
+++ b/.github/workflows/release-android-google-play.yaml
@@ -0,0 +1,76 @@
+# For setup instructions regarding this workflow, see https://www.nikl.me/blog/2023/github_workflow_to_publish_android_app/
+
+name: release-android-google-play
+
+on:
+ workflow_dispatch:
+ inputs:
+ version:
+ description: 'GitHub Release'
+ required: true
+ type: string
+ play_release:
+ description: 'Release name from google play console'
+ required: true
+ type: string
+
+# ToDo: adapt names
+env:
+ # used for uploading the app to a GitHub release
+ GAME_EXECUTABLE_NAME: ttt-ce
+ BUNDLE_PATH: "target/x/release/android/mobile.aab"
+ PACKAGE_NAME: "com.opencodebox.tttce"
+ # release track; you can promote a build to "higher" tracks in the play console or publish to a different track directly
+ # see track at https://github.com/r0adkll/upload-google-play#inputs for more options
+ TRACK: internal
+ MOBILE_DIRECTORY: mobile
+
+permissions:
+ contents: write
+
+jobs:
+ bundle-sign-release:
+ runs-on: ubuntu-latest
+ timeout-minutes: 40
+ steps:
+ - name: Install Dependencies
+ run: sudo apt-get update; sudo apt-get install pkg-config libx11-dev libasound2-dev libudev-dev lld llvm
+ - uses: actions/checkout@v3
+ - uses: dtolnay/rust-toolchain@stable
+ - name: Add Android targets
+ run: rustup target add aarch64-linux-android armv7-linux-androideabi
+ - name: Install cargo-binstall
+ run: curl -L --proto '=https' --tlsv1.2 -sSf https://raw.githubusercontent.com/cargo-bins/cargo-binstall/main/install-from-binstall-release.sh | bash
+ - name: Install xbuild
+ run: cargo binstall --git https://github.com/NiklasEi/xbuild --bin-dir x xbuild -y
+ - name: Build app bundle
+ run: |
+ cd ${{ env.MOBILE_DIRECTORY }}
+ x doctor
+ x build --release --platform android --store play
+ - name: sign app bundle
+ run: |
+ KEYSTORE_PATH=${{ runner.temp }}/upload-keystore.jks
+ echo -n "${{ secrets.PLAYSTORE_KEYSTORE }}" | base64 --decode > $KEYSTORE_PATH
+ jarsigner -verbose -sigalg SHA256withRSA -digestalg SHA-256 -keystore $KEYSTORE_PATH -storepass "${{ secrets.PLAYSTORE_KEYSTORE_PASSWORD }}" ${{ env.BUNDLE_PATH }} upload
+ - name: Upload self-signed bundle to GitHub
+ uses: svenstaro/upload-release-action@v2
+ with:
+ repo_token: ${{ secrets.GITHUB_TOKEN }}
+ file: ${{ env.BUNDLE_PATH }}
+ asset_name: ${{ env.GAME_EXECUTABLE_NAME }}_${{ inputs.version }}_android.aab
+ release_name: ${{ inputs.version }}
+ tag: ${{ inputs.version }}
+ overwrite: true
+ - name: prepare Google play store secrets
+ run: |
+ SERVICE_ACCOUNT=${{ runner.temp }}/service-account.json
+ echo -n "${{ secrets.PLAYSTORE_SERVICE_ACCOUNT }}" | base64 --decode > $SERVICE_ACCOUNT
+ - name: upload bundle to Google play store
+ uses: r0adkll/upload-google-play@v1
+ with:
+ serviceAccountJson: ${{ runner.temp }}/service-account.json
+ packageName: ${{ env.PACKAGE_NAME }}
+ releaseName: ${{ inputs.play_release }}
+ releaseFiles: ${{ env.BUNDLE_PATH }}
+ track: ${{ env.TRACK }}
diff --git a/.github/workflows/release-ios-testflight.yaml b/.github/workflows/release-ios-testflight.yaml
new file mode 100644
index 0000000..3590082
--- /dev/null
+++ b/.github/workflows/release-ios-testflight.yaml
@@ -0,0 +1,98 @@
+name: release-ios-testflight
+
+# This workflow builds, archives, exports, validates and uploads your ios app.
+# The version from input is only used for artifact names and as the release to upload the final ipa to.
+# Bump the versions in `mobile/ios-src/Info.plist` to change the version of your app bundle.
+
+# Special setup and Apple Developer Program membership (99$/year) is required for this workflow!
+
+# For setup instructions, see https://www.nikl.me/blog/2023/github_workflow_to_publish_ios_app/
+
+on:
+ workflow_dispatch:
+ inputs:
+ version:
+ description: 'Version - in the form of v1.2.3'
+ required: true
+ type: string
+
+# ToDo: adapt names
+env:
+ # used for uploading the app to a GitHub release
+ GAME_EXECUTABLE_NAME: ttt-ce
+ XCODE_PROJECT: mobile
+ MOBILE_DIRECTORY: mobile
+
+permissions:
+ contents: write
+
+jobs:
+ build-for-iOS:
+ runs-on: macos-latest
+ timeout-minutes: 40
+ steps:
+ - uses: actions/checkout@v3
+ - uses: dtolnay/rust-toolchain@stable
+ - name: Add iOS targets
+ run: rustup target add aarch64-apple-ios
+ - name: Install the Apple certificate and provisioning profile
+ id: profile
+ env:
+ IOS_CERTIFICATE: ${{ secrets.IOS_CERTIFICATE }}
+ IOS_CERTIFICATE_PASSWORD: ${{ secrets.IOS_CERTIFICATE_PASSWORD }}
+ IOS_PROVISION_PROFILE: ${{ secrets.IOS_PROVISION_PROFILE }}
+ IOS_KEYCHAIN_PASSWORD: ${{ secrets.IOS_KEYCHAIN_PASSWORD }}
+ run: |
+ # create variables
+ CERTIFICATE_PATH=${{ runner.temp }}/build_certificate.p12
+ PP_PATH=${{ runner.temp }}/profile.mobileprovision
+ KEYCHAIN_PATH=${{ runner.temp }}/app-signing.keychain-db
+
+ # import certificate and provisioning profile from secrets
+ echo -n "$IOS_CERTIFICATE" | base64 --decode -o $CERTIFICATE_PATH
+ echo -n "$IOS_PROVISION_PROFILE" | base64 --decode -o $PP_PATH
+ uuid=`grep UUID -A1 -a $PP_PATH | grep -io "[-A-F0-9]\{36\}"`
+ echo "uuid=$uuid" >> $GITHUB_OUTPUT
+
+ # create temporary keychain
+ security create-keychain -p "$IOS_KEYCHAIN_PASSWORD" $KEYCHAIN_PATH
+ security set-keychain-settings -lut 21600 $KEYCHAIN_PATH
+ security unlock-keychain -p "$IOS_KEYCHAIN_PASSWORD" $KEYCHAIN_PATH
+
+ # import certificate to keychain
+ security import $CERTIFICATE_PATH -P "$IOS_CERTIFICATE_PASSWORD" -A -t cert -f pkcs12 -k $KEYCHAIN_PATH
+ security list-keychain -d user -s $KEYCHAIN_PATH
+
+ # apply provisioning profile
+ mkdir -p ~/Library/MobileDevice/Provisioning\ Profiles
+ cp $PP_PATH ~/Library/MobileDevice/Provisioning\ Profiles/$uuid.mobileprovision
+ - name: Build app for iOS
+ run: |
+ cd ${{ env.MOBILE_DIRECTORY }}
+ xcodebuild PROVISIONING_PROFILE=${{ steps.profile.outputs.uuid }} -scheme ${{ env.XCODE_PROJECT }} clean archive -archivePath "Actions" -configuration Release -arch arm64
+ - name: export ipa
+ env:
+ EXPORT_PLIST: ${{ secrets.IOS_EXPORT_PRODUCTION }}
+ run: |
+ EXPORT_PLIST_PATH=${{ runner.temp }}/ExportOptions.plist
+ echo -n "$EXPORT_PLIST" | base64 --decode --output $EXPORT_PLIST_PATH
+ xcodebuild PROVISIONING_PROFILE=${{ steps.profile.outputs.uuid }} -exportArchive -archivePath ${{ env.MOBILE_DIRECTORY }}/Actions.xcarchive -exportOptionsPlist $EXPORT_PLIST_PATH -exportPath ${{ runner.temp }}/export
+ - name: decode API key
+ env:
+ API_KEY_BASE64: ${{ secrets.IOS_APPSTORE_API_PRIVATE_KEY }}
+ run: |
+ mkdir -p ~/private_keys
+ echo -n "$API_KEY_BASE64" | base64 --decode --output ~/private_keys/AuthKey_${{ secrets.IOS_APPSTORE_API_KEY_ID }}.p8
+ - name: Upload to testflight
+ run: |
+ xcrun altool --validate-app -f ${{ runner.temp }}/export/${{ env.XCODE_PROJECT }}.ipa -t ios --apiKey ${{ secrets.IOS_APPSTORE_API_KEY_ID }} --apiIssuer ${{ secrets.IOS_APPSTORE_ISSUER_ID }}
+ xcrun altool --upload-app -f ${{ runner.temp }}/export/${{ env.XCODE_PROJECT }}.ipa -t ios --apiKey ${{ secrets.IOS_APPSTORE_API_KEY_ID }} --apiIssuer ${{ secrets.IOS_APPSTORE_ISSUER_ID }}
+ - name: Upload release
+ uses: svenstaro/upload-release-action@v2
+ with:
+ repo_token: ${{ secrets.GITHUB_TOKEN }}
+ file: ${{ runner.temp }}/export/${{ env.XCODE_PROJECT }}.ipa
+ asset_name: ${{ env.GAME_EXECUTABLE_NAME }}_${{ inputs.version }}_ios.ipa
+ release_name: ${{ inputs.version }}
+ tag: ${{ inputs.version }}
+ overwrite: true
diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml
new file mode 100644
index 0000000..a8db05e
--- /dev/null
+++ b/.github/workflows/release.yaml
@@ -0,0 +1,268 @@
+name: release-flow
+
+on:
+ push:
+ tags:
+ - "v[0-9]+.[0-9]+.[0-9]+*"
+ workflow_dispatch:
+ inputs:
+ version:
+ description: 'Version - in the form of v1.2.3'
+ required: true
+ type: string
+
+# ToDo: adapt names
+env:
+ # This variable is used to name release output files.
+ GAME_EXECUTABLE_NAME: ttt-ce
+ GAME_OSX_APP_NAME: TTTCE
+
+permissions:
+ contents: write
+
+jobs:
+ get-version:
+ runs-on: ubuntu-latest
+ steps:
+ - name: Get tag
+ id: tag
+ run: echo "tag=${GITHUB_REF#refs/tags/}" >> "$GITHUB_OUTPUT"
+ outputs:
+ version: ${{ inputs.version || steps.tag.outputs.tag }}
+
+ build-macOS:
+ runs-on: macos-latest
+ needs: get-version
+ env:
+ # macOS 11.0 Big Sur is the first version to support universal binaries
+ MACOSX_DEPLOYMENT_TARGET: 11.0
+ VERSION: ${{needs.get-version.outputs.version}}
+ steps:
+ - name: Checkout repository
+ uses: actions/checkout@v3
+ - name: Remove build script
+ run: |
+ rm build.rs
+ - name: Install rust toolchain for Apple Silicon
+ uses: dtolnay/rust-toolchain@master
+ with:
+ toolchain: stable
+ targets: aarch64-apple-darwin
+ - name: Build release for Apple Silicon
+ run: |
+ SDKROOT=$(xcrun -sdk macosx --show-sdk-path) cargo build --profile dist --target=aarch64-apple-darwin
+ - name: Install rust toolchain for Apple x86
+ uses: dtolnay/rust-toolchain@master
+ with:
+ toolchain: stable
+ targets: x86_64-apple-darwin
+ - name: Build release for x86 Apple
+ run: |
+ SDKROOT=$(xcrun -sdk macosx --show-sdk-path) cargo build --profile dist --target=x86_64-apple-darwin
+ - name: Create Universal Binary
+ run: |
+ lipo -create -output target/dist/${{ env.GAME_EXECUTABLE_NAME }} target/aarch64-apple-darwin/dist/${{ env.GAME_EXECUTABLE_NAME }} target/x86_64-apple-darwin/dist/${{ env.GAME_EXECUTABLE_NAME }}
+ - name: Create release
+ run: |
+ mkdir -p build/macos/src/Game.app/Contents/MacOS/assets
+ cp -r assets/ build/macos/src/Game.app/Contents/MacOS/assets
+ cp -r credits/ build/macos/src/Game.app/Contents/MacOS/credits
+ cp target/dist/${{ env.GAME_EXECUTABLE_NAME }} build/macos/src/Game.app/Contents/MacOS/
+ mv build/macos/src/Game.app build/macos/src/${{ env.GAME_OSX_APP_NAME }}.app
+ ln -s /Applications build/macos/src/
+ hdiutil create -fs HFS+ -volname "${{ env.GAME_OSX_APP_NAME }}" -srcfolder build/macos/src ${{ env.GAME_EXECUTABLE_NAME }}.dmg
+ - name: Upload release
+ uses: svenstaro/upload-release-action@v2
+ with:
+ repo_token: ${{ secrets.GITHUB_TOKEN }}
+ file: ${{ env.GAME_EXECUTABLE_NAME }}.dmg
+ asset_name: ${{ env.GAME_EXECUTABLE_NAME }}_${{ env.VERSION }}_macOS.dmg
+ release_name: ${{ env.VERSION }}
+ tag: ${{ env.VERSION }}
+ overwrite: true
+
+ build-linux:
+ runs-on: ubuntu-latest
+ needs: get-version
+ env:
+ VERSION: ${{needs.get-version.outputs.version}}
+ steps:
+ - name: Checkout repository
+ uses: actions/checkout@v3
+ - name: Install rust toolchain
+ uses: dtolnay/rust-toolchain@master
+ with:
+ toolchain: stable
+ - name: Install Dependencies
+ run: sudo apt-get update; sudo apt-get install pkg-config libx11-dev libasound2-dev libudev-dev
+ - name: Build release
+ run: |
+ cargo build --profile dist
+ - name: Prepare release
+ run: |
+ chmod +x target/dist/${{ env.GAME_EXECUTABLE_NAME }}
+ mv target/dist/${{ env.GAME_EXECUTABLE_NAME }} .
+ - name: Bundle release
+ run: |
+ tar -czf ${{ env.GAME_EXECUTABLE_NAME }}_linux.tar.gz ${{ env.GAME_EXECUTABLE_NAME }} assets credits
+ - name: Upload release
+ uses: svenstaro/upload-release-action@v2
+ with:
+ repo_token: ${{ secrets.GITHUB_TOKEN }}
+ file: ${{ env.GAME_EXECUTABLE_NAME }}_linux.tar.gz
+ asset_name: ${{ env.GAME_EXECUTABLE_NAME }}_${{ env.VERSION }}_linux.tar.gz
+ release_name: ${{ env.VERSION }}
+ tag: ${{ env.VERSION }}
+ overwrite: true
+
+ build-windows:
+ runs-on: windows-latest
+ needs: get-version
+ env:
+ VERSION: ${{needs.get-version.outputs.version}}
+ BUILD_INSTALLER: ${{ false }}
+ steps:
+ - name: Checkout repository
+ uses: actions/checkout@v3
+ - name: Install rust toolchain
+ uses: dtolnay/rust-toolchain@master
+ with:
+ toolchain: stable
+ - name: Install dotnet
+ if: ${{ env.BUILD_INSTALLER }}
+ uses: actions/setup-dotnet@v3
+ with:
+ global-json-file: build/windows/installer/global.json
+ - name: Build release
+ run: |
+ cargo build --profile dist
+ - name: Prepare release
+ run: |
+ mkdir target/dist/assets && cp -r assets target/dist/assets
+ mkdir target/dist/credits && cp -r credits target/dist/credits
+ - name: Zip release
+ uses: vimtor/action-zip@v1.1
+ with:
+ files: target/dist/assets/ target/dist/credits/ target/dist/${{ env.GAME_EXECUTABLE_NAME }}.exe
+ dest: ${{ env.GAME_EXECUTABLE_NAME }}_windows.zip
+ - name: Create Installer
+ if: ${{ env.BUILD_INSTALLER }}
+ run: dotnet build -p:Version=${{ env.VERSION }} -c Release build/windows/installer/Installer.wixproj --output installer
+ - name: Upload release
+ uses: svenstaro/upload-release-action@v2
+ with:
+ repo_token: ${{ secrets.GITHUB_TOKEN }}
+ file: ${{ env.GAME_EXECUTABLE_NAME }}_windows.zip
+ asset_name: ${{ env.GAME_EXECUTABLE_NAME }}_${{ env.VERSION }}_windows.zip
+ tag: ${{ env.VERSION }}
+ overwrite: true
+ - name: Upload installer
+ if: ${{ env.BUILD_INSTALLER }}
+ uses: svenstaro/upload-release-action@v2
+ with:
+ repo_token: ${{ secrets.GITHUB_TOKEN }}
+ file: installer/en-US/installer.msi
+ asset_name: ${{ env.GAME_EXECUTABLE_NAME }}_${{ env.VERSION }}_windows.msi
+ release_name: ${{ env.VERSION }}
+ tag: ${{ env.VERSION }}
+ overwrite: true
+
+ build-web:
+ runs-on: ubuntu-latest
+ needs: get-version
+ env:
+ VERSION: ${{needs.get-version.outputs.version}}
+ steps:
+ - name: Checkout repository
+ uses: actions/checkout@v3
+ - name: Install rust toolchain
+ uses: dtolnay/rust-toolchain@master
+ with:
+ toolchain: stable
+ - name: Install Dependencies
+ run: sudo apt-get update; sudo apt-get install pkg-config libx11-dev libasound2-dev libudev-dev
+ - name: Install trunk
+ uses: jetli/trunk-action@v0.4.0
+ with:
+ version: latest
+ - name: Add wasm target
+ run: |
+ rustup target add wasm32-unknown-unknown
+ - name: Build Release
+ run: |
+ trunk build --release
+ - name: Optimize Wasm
+ uses: NiklasEi/wasm-opt-action@v2
+ with:
+ file: dist/*.wasm
+ - name: Zip release
+ uses: vimtor/action-zip@v1.1
+ with:
+ files: dist/
+ dest: ${{ env.GAME_EXECUTABLE_NAME }}_web.zip
+ - name: Upload release
+ uses: svenstaro/upload-release-action@v2
+ with:
+ repo_token: ${{ secrets.GITHUB_TOKEN }}
+ file: ${{ env.GAME_EXECUTABLE_NAME }}_web.zip
+ asset_name: ${{ env.GAME_EXECUTABLE_NAME }}_${{ env.VERSION }}_web.zip
+ release_name: ${{ env.VERSION }}
+ tag: ${{ env.VERSION }}
+ overwrite: true
+
+ build-for-iOS:
+ runs-on: macos-latest
+ timeout-minutes: 30
+ needs: get-version
+ env:
+ VERSION: ${{needs.get-version.outputs.version}}
+ steps:
+ - uses: actions/checkout@v3
+ - uses: dtolnay/rust-toolchain@stable
+ - name: Add iOS targets
+ run: rustup target add aarch64-apple-ios x86_64-apple-ios
+ - name: Build app for iOS
+ run: |
+ cd mobile
+ make xcodebuild-iphone-release
+ mkdir Payload
+ mv build/Build/Products/Release-iphoneos/*.app Payload
+ zip -r ${{ env.GAME_EXECUTABLE_NAME }}.zip Payload
+ mv ${{ env.GAME_EXECUTABLE_NAME }}.zip ${{ env.GAME_EXECUTABLE_NAME }}.ipa
+ - name: Upload release
+ uses: svenstaro/upload-release-action@v2
+ with:
+ repo_token: ${{ secrets.GITHUB_TOKEN }}
+ file: mobile/${{ env.GAME_EXECUTABLE_NAME }}.ipa
+ asset_name: ${{ env.GAME_EXECUTABLE_NAME }}_${{ env.VERSION }}_unsigned_ios.ipa
+ release_name: ${{ env.VERSION }}
+ tag: ${{ env.VERSION }}
+ overwrite: true
+
+ build-for-Android:
+ runs-on: ubuntu-latest
+ timeout-minutes: 30
+ needs: get-version
+ env:
+ VERSION: ${{needs.get-version.outputs.version}}
+ steps:
+ - uses: actions/checkout@v3
+ - uses: dtolnay/rust-toolchain@stable
+ - name: Add Android targets
+ # could add more targets like armv7-linux-androideabi here (then also add to cargo-apk config)
+ run: rustup target add aarch64-linux-android
+ - name: Install Cargo APK
+ run: cargo install --force cargo-apk
+ - name: Build app for Android
+ # This uses a debug build, since release builds require keystore configuration
+ # For AAB builds that can be pushed to the Play store, see the release-android-google-play workflow.
+ run: ANDROID_NDK_ROOT=$ANDROID_NDK_LATEST_HOME cargo apk build --package mobile
+ - name: Upload release
+ uses: svenstaro/upload-release-action@v2
+ with:
+ repo_token: ${{ secrets.GITHUB_TOKEN }}
+ file: target/debug/apk/${{ env.GAME_OSX_APP_NAME }}.apk
+ asset_name: ${{ env.GAME_EXECUTABLE_NAME }}_${{ env.VERSION }}_android.apk
+ release_name: ${{ env.VERSION }}
+ tag: ${{ env.VERSION }}
+ overwrite: true
diff --git a/.gitignore b/.gitignore
index ea8c4bf..f2401c7 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1 +1,5 @@
-/target
+target/
+.idea/
+.DS_Store
+
+dist/
diff --git a/.vscode/launch.json b/.vscode/launch.json
index a3aa1ff..353de75 100644
--- a/.vscode/launch.json
+++ b/.vscode/launch.json
@@ -1,25 +1,76 @@
{
+ // Use IntelliSense to learn about possible attributes.
+ // Hover to view descriptions of existing attributes.
+ // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
+ // this config bypasses waiting for debugger attachment, increasing speed
+ {
+ "name": "Quick Launch (nix-shell)",
+ "type": "node-terminal",
+ "request": "launch",
+ "command": "nix-shell --run 'cargo run --features dev'",
+ },
{
"command": "steam-run ./target/debug/ttt-ce",
- "name": "Run program",
+ "name": "Run compiled (steam-run)",
"request": "launch",
"type": "node-terminal"
},
{
- "command": "nix-shell --run 'cargo run'",
- "name": "Build and Run program",
+ "type": "lldb",
"request": "launch",
- "type": "node-terminal"
+ "name": "Debug",
+ "cargo": {
+ "args": [
+ "build",
+ "--bin=ttt-ce",
+ "--package=ttt-ce",
+ "--features",
+ "dev"
+ ],
+ "filter": {
+ "name": "ttt-ce",
+ "kind": "bin"
+ },
+ },
+ "args": [],
+ "cwd": "${workspaceFolder}",
+ "env": {
+ "CARGO_MANIFEST_DIR": "${workspaceFolder}",
+ },
+ "linux": {
+ "env": {
+ // platform-specific launch config overwrites (rather than merges with) existing config, so need to specify CARGO_MANIFEST_DIR again
+ "CARGO_MANIFEST_DIR": "${workspaceFolder}",
+ "LD_LIBRARY_PATH": "${env:LD_LIBRARY_PATH}:${workspaceFolder}/target/debug:${env:HOME}/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib:${env:HOME}/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib"
+ }
+ }
},
{
- "command": "nix-shell --run 'cargo run --features bevy/dynamic_linking'",
- "name": "Mold build and run program",
+ "type": "lldb",
"request": "launch",
- "type": "node-terminal"
- },
-
- ],
- "compounds": []
+ "name": "Debug unit tests",
+ "cargo": {
+ "args": [
+ "test",
+ "--no-run",
+ "--bin=ttt-ce",
+ "--package=ttt-ce",
+ "--features",
+ "dev"
+ ],
+ "filter": {
+ "name": "ttt-ce",
+ "kind": "bin"
+ }
+ },
+ "args": [],
+ "cwd": "${workspaceFolder}",
+ "env": {
+ "CARGO_MANIFEST_DIR": "${workspaceFolder}",
+ "LD_LIBRARY_PATH": "${env:LD_LIBRARY_PATH}:${workspaceFolder}/target/debug:${env:HOME}/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib:${env:HOME}/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib"
+ }
+ }
+ ]
}
diff --git a/.vscode/tasks.json b/.vscode/tasks.json
index a15b6da..683cde1 100644
--- a/.vscode/tasks.json
+++ b/.vscode/tasks.json
@@ -4,7 +4,21 @@
"version": "2.0.0",
"tasks": [
{
- "label": "nix-shell-cargo-build",
+ "label": "nix-shell-cargo-build-dev",
+ "type": "shell",
+ "command": "nix-shell",
+ "args": [
+ "--run",
+ "cargo build --features dev"
+ ],
+ "group": {
+ "kind": "build",
+ "isDefault": true
+ },
+ "problemMatcher": []
+ },
+ {
+ "label": "nix-shell-cargo-build-release",
"type": "shell",
"command": "nix-shell",
"args": [
diff --git a/Bevy-template-README.md b/Bevy-template-README.md
new file mode 100644
index 0000000..eab40ff
--- /dev/null
+++ b/Bevy-template-README.md
@@ -0,0 +1,100 @@
+# A Bevy game template
+
+Template for a Game using the awesome [Bevy engine][bevy] featuring out of the box builds for Windows, Linux, macOS, Web (Wasm), Android, and iOS.
+
+# What does this template give you?
+
+* small example ["game"](https://niklasei.github.io/ttt-ce_template/)
+* easy setup for running the web build using [trunk] (`trunk serve`)
+* run the native version with `cargo run`
+* workflow for GitHub actions creating releases for Windows, Linux, macOS, and Web (Wasm) ready for distribution
+ * the same workflow creates development builds for the mobile platforms (two separate workflows can push to the stores after [some setup](#deploy-mobile-platforms))
+ * push a tag in the form of `v[0-9]+.[0-9]+.[0-9]+*` (e.g. `v1.1.42`) to trigger the flow
+ * WARNING: if you work in a private repository, please be aware that macOS and Windows runners cost more build minutes. **For public repositories the builds are free!**
+
+# How to use this template?
+
+ 1. Click "Use this template" on the repository's page
+ 2. Look for `ToDo` to use your own game name everywhere
+ 3. [Update the icons as described below](#updating-the-icons)
+ 4. Start coding :tada:
+ * Start the native app: `cargo run`
+ * Start the web build: `trunk serve`
+ * requires [trunk]: `cargo install --locked trunk`
+ * requires `wasm32-unknown-unknown` target: `rustup target add wasm32-unknown-unknown`
+ * this will serve your app on `8080` and automatically rebuild + reload it after code changes
+ * Start the android app: `cargo apk run -p mobile`
+ * requires following the instructions in the [bevy example readme for android setup][android-instructions]
+ * Start the iOS app (see the [bevy example readme for ios setup instructions][ios-instructions])
+ * Install Xcode through the app store
+ * Launch Xcode and install the iOS simulator (check the box upon first start, or install it through `Preferences > Platforms` later)
+ * Install the iOS and iOS simulator Rust targets with `rustup target add aarch64-apple-ios x86_64-apple-ios aarch64-apple-ios-sim`
+ * run `make run` inside the `/mobile` directory
+
+You should keep the `credits` directory up to date. The release workflow automatically includes the directory in every build.
+
+### Updating the icons
+ 1. Replace `build/macos/icon_1024x1024.png` with a `1024` times `1024` pixel png icon and run `create_icns.sh` or `create_icns_linux.sh` if you use linux (make sure to run the script inside the `build/macos` directory) - _Note: `create_icns.sh` requires a mac, and `create_icns_linux.sh` requires imagemagick and png2icns_
+ 2. Replace `build/windows/icon.ico` (used for windows executable and as favicon for the web-builds)
+ * You can create an `.ico` file for windows by following these steps:
+ 1. Open `macos/AppIcon.iconset/icon_256x256.png` in [Gimp](https://www.gimp.org/downloads/)
+ 2. Select the `File > Export As` menu item.
+ 3. Change the file extension to `.ico` (or click `Select File Type (By Extension)` and select `Microsoft Windows Icon`)
+ 4. Save as `build/windows/icon.ico`
+ 3. Replace `build/android/res/mipmap-mdpi/icon.png` with `macos/AppIcon.iconset/icon_256x256.png`, but rename it to `icon.png`
+
+### Deploy web build to GitHub pages
+
+ 1. Trigger the `deploy-github-page` workflow
+ 2. Activate [GitHub pages](https://pages.github.com/) for your repository
+ 1. Source from the `gh-pages` branch (created by the just executed action)
+ 3. After a few minutes your game is live at `http://username.github.io/repository`
+
+To deploy newer versions, just run the `deploy-github-page` workflow again.
+
+# Deploy mobile platforms
+
+For general info on mobile support, you can take a look at [one of my blog posts about mobile development with Bevy][mobile_dev_with_bevy_2] which is relevant to the current setup.
+
+## Android
+
+Currently, `cargo-apk` is used to run the development app. But APKs can no longer be published in the store and `cargo-apk` cannot produce the required AAB. This is why there is setup for two android related tools. In [`mobile/Cargo.toml`](./mobile/Cargo.toml), the `package.metadata.android` section configures `cargo-apk` while [`mobile/manifest.yaml`](./mobile/manifest.yaml) configures a custom fork of `xbuild` which is used in the `release-android-google-play` workflow to create an AAB.
+
+There is a [post about how to set up the android release workflow][workflow_bevy_android] on my blog.
+
+## iOS
+
+The setup is pretty much what Bevy does for the mobile example.
+
+There is a [post about how to set up the iOS release workflow][workflow_bevy_ios] on my blog.
+
+# Removing mobile platforms
+
+If you don't want to target Android or iOS, you can just delete the `/mobile`, `/build/android`, and `/build/ios` directories.
+Then delete the `[workspace]` section from `Cargo.toml`.
+
+# Getting started with Bevy
+
+You should check out the Bevy website for [links to resources][bevy-learn] and the [Bevy Cheat Book] for a bunch of helpful documentation and examples. I can also recommend the [official Bevy Discord server][bevy-discord] for keeping up to date with the development and getting help from other Bevy users.
+
+# Known issues
+
+Audio in web-builds can have issues in some browsers. This seems to be a general performance issue and not due to the audio itself (see [bevy_kira_audio/#9][firefox-sound-issue]).
+
+# License
+
+This project is licensed under [CC0 1.0 Universal](LICENSE) except some content of `assets` and the Bevy icons in the `build` directory (see [Credits](credits/CREDITS.md)). Go crazy and feel free to show me whatever you build with this ([@nikl_me][nikl-twitter] / [@nikl_me@mastodon.online][nikl-mastodon] ).
+
+[bevy]: https://bevyengine.org/
+[bevy-learn]: https://bevyengine.org/learn/
+[bevy-discord]: https://discord.gg/bevy
+[nikl-twitter]: https://twitter.com/nikl_me
+[nikl-mastodon]: https://mastodon.online/@nikl_me
+[firefox-sound-issue]: https://github.com/NiklasEi/bevy_kira_audio/issues/9
+[Bevy Cheat Book]: https://bevy-cheatbook.github.io/introduction.html
+[trunk]: https://trunkrs.dev/
+[android-instructions]: https://github.com/bevyengine/bevy/blob/latest/examples/README.md#setup
+[ios-instructions]: https://github.com/bevyengine/bevy/blob/latest/examples/README.md#setup-1
+[mobile_dev_with_bevy_2]: https://www.nikl.me/blog/2023/notes_on_mobile_development_with_bevy_2/
+[workflow_bevy_android]: https://www.nikl.me/blog/2023/github_workflow_to_publish_android_app/
+[workflow_bevy_ios]: https://www.nikl.me/blog/2023/github_workflow_to_publish_ios_app/
diff --git a/Cargo.lock b/Cargo.lock
index 7260eac..2ec0293 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -169,6 +169,12 @@ dependencies = [
"libc",
]
+[[package]]
+name = "anyhow"
+version = "1.0.81"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0952808a6c2afd1aa8947271f3a60f1a6763c7b912d210184c5149b5cf147247"
+
[[package]]
name = "approx"
version = "0.5.1"
@@ -289,6 +295,12 @@ version = "4.7.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fbb36e985947064623dbd357f727af08ffd077f93d696782f3c56365fa2e2799"
+[[package]]
+name = "atomic-arena"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5450eca8ce5abcfd5520727e975ebab30ccca96030550406b0ca718b224ead10"
+
[[package]]
name = "atomic-waker"
version = "1.1.2"
@@ -297,9 +309,9 @@ checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0"
[[package]]
name = "autocfg"
-version = "1.1.0"
+version = "1.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa"
+checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80"
[[package]]
name = "base64"
@@ -313,6 +325,7 @@ version = "0.13.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ea370412c322af887c9115442d8f2ec991b652f163a1d8920ecaf08cae63f2bc"
dependencies = [
+ "bevy_dylib",
"bevy_internal",
]
@@ -353,7 +366,7 @@ checksum = "b3c488161a04a123e10273e16d4533945943fcfcf345f066242790e8977aee2d"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.53",
+ "syn 2.0.55",
]
[[package]]
@@ -435,6 +448,29 @@ dependencies = [
"web-sys",
]
+[[package]]
+name = "bevy_asset_loader"
+version = "0.20.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "504cac33f47bee039c0706c9c5baf72208e5bd515db3840dc0cf57fd857914f4"
+dependencies = [
+ "anyhow",
+ "bevy",
+ "bevy_asset_loader_derive",
+ "path-slash",
+]
+
+[[package]]
+name = "bevy_asset_loader_derive"
+version = "0.20.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "adda0f1b91d2e34b132ea29a14dbe2adf273073c168950603ebddaf53a23947f"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.55",
+]
+
[[package]]
name = "bevy_asset_macros"
version = "0.13.1"
@@ -444,25 +480,7 @@ dependencies = [
"bevy_macro_utils",
"proc-macro2",
"quote",
- "syn 2.0.53",
-]
-
-[[package]]
-name = "bevy_audio"
-version = "0.13.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0af1796b7e56c2f49de5be72fb2aadb8f9310d6173d70040fd2eff1c7cb29009"
-dependencies = [
- "bevy_app",
- "bevy_asset",
- "bevy_derive",
- "bevy_ecs",
- "bevy_math",
- "bevy_reflect",
- "bevy_transform",
- "bevy_utils",
- "cpal",
- "rodio",
+ "syn 2.0.55",
]
[[package]]
@@ -510,7 +528,7 @@ checksum = "7de77523d154e220a740e568a89f52fac7de481374bdecbbbeb283a37580ba34"
dependencies = [
"bevy_macro_utils",
"quote",
- "syn 2.0.53",
+ "syn 2.0.55",
]
[[package]]
@@ -567,7 +585,7 @@ dependencies = [
"bevy_macro_utils",
"proc-macro2",
"quote",
- "syn 2.0.53",
+ "syn 2.0.55",
]
[[package]]
@@ -682,7 +700,7 @@ dependencies = [
"bevy_macro_utils",
"proc-macro2",
"quote",
- "syn 2.0.53",
+ "syn 2.0.55",
]
[[package]]
@@ -754,7 +772,6 @@ dependencies = [
"bevy_animation",
"bevy_app",
"bevy_asset",
- "bevy_audio",
"bevy_core",
"bevy_core_pipeline",
"bevy_derive",
@@ -783,6 +800,20 @@ dependencies = [
"bevy_winit",
]
+[[package]]
+name = "bevy_kira_audio"
+version = "0.19.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1bf58fed4b6fd13df35e77002821cf459948131de4ac262c3b6a175d8fe28fd3"
+dependencies = [
+ "anyhow",
+ "bevy",
+ "kira",
+ "parking_lot",
+ "thiserror",
+ "uuid",
+]
+
[[package]]
name = "bevy_log"
version = "0.13.1"
@@ -808,7 +839,7 @@ dependencies = [
"proc-macro2",
"quote",
"rustc-hash",
- "syn 2.0.53",
+ "syn 2.0.55",
"toml_edit",
]
@@ -904,7 +935,7 @@ dependencies = [
"bevy_macro_utils",
"proc-macro2",
"quote",
- "syn 2.0.53",
+ "syn 2.0.55",
"uuid",
]
@@ -962,7 +993,7 @@ dependencies = [
"bevy_macro_utils",
"proc-macro2",
"quote",
- "syn 2.0.53",
+ "syn 2.0.55",
]
[[package]]
@@ -1130,7 +1161,7 @@ checksum = "014c80f466ed01821a2e602d63cd5076915c1af5de5fa3c074cc4a9ca898ada7"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.53",
+ "syn 2.0.55",
]
[[package]]
@@ -1199,7 +1230,7 @@ source = "git+https://git.opencodebox.com/MikolajG/bevy_xpbd?branch=reflect-seri
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.53",
+ "syn 2.0.55",
]
[[package]]
@@ -1219,7 +1250,7 @@ dependencies = [
"regex",
"rustc-hash",
"shlex",
- "syn 2.0.53",
+ "syn 2.0.55",
]
[[package]]
@@ -1359,7 +1390,7 @@ checksum = "4da9a32f3fed317401fa3c862968128267c3106685286e15d5aaa3d7389c2f60"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.53",
+ "syn 2.0.55",
]
[[package]]
@@ -1388,18 +1419,6 @@ dependencies = [
"thiserror",
]
-[[package]]
-name = "calloop-wayland-source"
-version = "0.2.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0f0ea9b9476c7fad82841a8dbb380e2eae480c21910feba80725b46931ed8f02"
-dependencies = [
- "calloop",
- "rustix",
- "wayland-backend",
- "wayland-client",
-]
-
[[package]]
name = "cc"
version = "1.0.90"
@@ -1828,6 +1847,19 @@ dependencies = [
"bytemuck",
]
+[[package]]
+name = "embed-resource"
+version = "1.8.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e62abb876c07e4754fae5c14cafa77937841f01740637e17d78dc04352f32a5e"
+dependencies = [
+ "cc",
+ "rustc_version",
+ "toml",
+ "vswhom",
+ "winreg",
+]
+
[[package]]
name = "encase"
version = "0.7.0"
@@ -1857,7 +1889,16 @@ checksum = "92959a9e8d13eaa13b8ae8c7b583c3bf1669ca7a8e7708a088d12587ba86effc"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.53",
+ "syn 2.0.55",
+]
+
+[[package]]
+name = "encoding_rs"
+version = "0.8.33"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7268b386296a025e474d5140678f75d6de9493ae55a5d709eeb9dd08149945e1"
+dependencies = [
+ "cfg-if",
]
[[package]]
@@ -1965,9 +2006,9 @@ dependencies = [
[[package]]
name = "fastrand"
-version = "2.0.1"
+version = "2.0.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "25cbce373ec4653f1a01a31e8a5e5ec0c622dc27ff9c4e6606eefef5cbbed4a5"
+checksum = "658bd65b1cf4c852a3cc96f18a8ce7b5640f6b703f905c7d74532294c2a63984"
[[package]]
name = "fdeflate"
@@ -2018,7 +2059,7 @@ checksum = "1a5c6c585bc94aaf2c7b51dd4c2ba22680844aba4c687be581871a6f518c5742"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.53",
+ "syn 2.0.55",
]
[[package]]
@@ -2188,7 +2229,7 @@ dependencies = [
"inflections",
"proc-macro2",
"quote",
- "syn 2.0.53",
+ "syn 2.0.55",
]
[[package]]
@@ -2323,6 +2364,12 @@ version = "0.4.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8"
+[[package]]
+name = "hermit-abi"
+version = "0.3.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024"
+
[[package]]
name = "hexasphere"
version = "10.0.0"
@@ -2507,6 +2554,21 @@ version = "3.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e2db585e1d738fc771bf08a151420d3ed193d9d895a36df7f6f8a9456b911ddc"
+[[package]]
+name = "kira"
+version = "0.8.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8968f1eda49cdf4f6406fd5ffe590c3ca2778a1b0e50b5684974b138a99dfb2f"
+dependencies = [
+ "atomic-arena",
+ "cpal",
+ "glam",
+ "mint",
+ "ringbuf",
+ "send_wrapper",
+ "symphonia",
+]
+
[[package]]
name = "ktx2"
version = "0.3.0"
@@ -2528,17 +2590,6 @@ version = "1.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55"
-[[package]]
-name = "lewton"
-version = "0.10.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "777b48df9aaab155475a83a7df3070395ea1ac6902f5cd062b8f2b028075c030"
-dependencies = [
- "byteorder",
- "ogg",
- "tinyvec",
-]
-
[[package]]
name = "libc"
version = "0.2.153"
@@ -2657,15 +2708,6 @@ version = "2.7.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "523dc4f511e55ab87b694dc30d0f820d60906ef06413f93d4d7a1385599cc149"
-[[package]]
-name = "memmap2"
-version = "0.9.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fe751422e4a8caa417e13c3ea66452215d7d63e19e604f4980461212f3ae1322"
-dependencies = [
- "libc",
-]
-
[[package]]
name = "metal"
version = "0.27.0"
@@ -2703,6 +2745,15 @@ version = "0.5.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e53debba6bda7a793e5f99b8dacf19e626084f525f7829104ba9898f367d85ff"
+[[package]]
+name = "mobile"
+version = "0.1.0"
+dependencies = [
+ "bevy",
+ "cpal",
+ "ttt-ce",
+]
+
[[package]]
name = "naga"
version = "0.19.2"
@@ -2881,7 +2932,7 @@ checksum = "ed3955f1a9c7c0c15e092f9c887db08b1fc683305fdf6eb6684f22555355e202"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.53",
+ "syn 2.0.55",
]
[[package]]
@@ -2932,7 +2983,7 @@ dependencies = [
"proc-macro-crate",
"proc-macro2",
"quote",
- "syn 2.0.53",
+ "syn 2.0.55",
]
[[package]]
@@ -3045,15 +3096,6 @@ dependencies = [
"cc",
]
-[[package]]
-name = "ogg"
-version = "0.8.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6951b4e8bf21c8193da321bcce9c9dd2e13c858fe078bf9054a288b419ae5d6e"
-dependencies = [
- "byteorder",
-]
-
[[package]]
name = "once_cell"
version = "1.19.0"
@@ -3126,9 +3168,9 @@ dependencies = [
[[package]]
name = "parry3d"
-version = "0.13.6"
+version = "0.13.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "13d0bdaf533851feec5cba9af11cefcc753ecefba05f758cf6abe886086bc3f5"
+checksum = "6ccba18a65dba56c08dadfa936e0c9efbc883b3a26dc77d2685f78be10f7667c"
dependencies = [
"approx",
"arrayvec",
@@ -3148,9 +3190,9 @@ dependencies = [
[[package]]
name = "parry3d-f64"
-version = "0.13.6"
+version = "0.13.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "368eb8be4f9f4b6669474f092a954cb94151cc57b097b95acab3b30ed4c4164f"
+checksum = "d259245abcc09379798e4d373d9019e0df4dc6f7f128ecd68700a5927dc32034"
dependencies = [
"approx",
"arrayvec",
@@ -3174,6 +3216,12 @@ version = "1.0.14"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "de3145af08024dea9fa9914f381a17b8fc6034dfb00f3a84013f7ff43f29ed4c"
+[[package]]
+name = "path-slash"
+version = "0.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1e91099d4268b0e11973f036e885d652fb0b21fedcf69738c627f94db6a44f42"
+
[[package]]
name = "percent-encoding"
version = "2.3.1"
@@ -3228,12 +3276,13 @@ dependencies = [
[[package]]
name = "polling"
-version = "3.5.0"
+version = "3.6.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "24f040dee2588b4963afb4e420540439d126f73fdacf4a9c486a96d840bac3c9"
+checksum = "e0c976a60b2d7e99d6f229e414670a9b85d13ac305cc6d1e9c134de58c5aaaf6"
dependencies = [
"cfg-if",
"concurrent-queue",
+ "hermit-abi",
"pin-project-lite",
"rustix",
"tracing",
@@ -3249,6 +3298,12 @@ dependencies = [
"unicode-xid",
]
+[[package]]
+name = "ppv-lite86"
+version = "0.2.17"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de"
+
[[package]]
name = "presser"
version = "0.3.1"
@@ -3309,15 +3364,6 @@ version = "1.0.15"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "43d84d1d7a6ac92673717f9f6d1518374ef257669c24ebc5ac25d5033828be58"
-[[package]]
-name = "quick-xml"
-version = "0.31.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1004a344b30a54e2ee58d66a71b32d2db2feb0a31f9a2d302bf0536f15de2a33"
-dependencies = [
- "memchr",
-]
-
[[package]]
name = "quote"
version = "1.0.35"
@@ -3333,6 +3379,36 @@ version = "0.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "17fd96390ed3feda12e1dfe2645ed587e0bea749e319333f104a33ff62f77a0b"
+[[package]]
+name = "rand"
+version = "0.8.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404"
+dependencies = [
+ "libc",
+ "rand_chacha",
+ "rand_core",
+]
+
+[[package]]
+name = "rand_chacha"
+version = "0.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88"
+dependencies = [
+ "ppv-lite86",
+ "rand_core",
+]
+
+[[package]]
+name = "rand_core"
+version = "0.6.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c"
+dependencies = [
+ "getrandom",
+]
+
[[package]]
name = "range-alloc"
version = "0.1.3"
@@ -3359,9 +3435,9 @@ checksum = "60a357793950651c4ed0f3f52338f53b2f809f32d83a07f72909fa13e4c6c1e3"
[[package]]
name = "rayon"
-version = "1.9.0"
+version = "1.10.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e4963ed1bc86e4f3ee217022bd855b297cef07fb9eac5dfa1f788b220b49b3bd"
+checksum = "b418a60154510ca1a002a752ca9714984e21e4241e804d32555251faf8b78ffa"
dependencies = [
"either",
"rayon-core",
@@ -3451,22 +3527,21 @@ version = "1.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "19b30a45b0cd0bcca8037f3d0dc3421eaf95327a17cad11964fb8179b4fc4832"
+[[package]]
+name = "ringbuf"
+version = "0.3.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "79abed428d1fd2a128201cec72c5f6938e2da607c6f3745f769fabea399d950a"
+dependencies = [
+ "crossbeam-utils",
+]
+
[[package]]
name = "robust"
version = "1.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "cbf4a6aa5f6d6888f39e980649f3ad6b666acdce1d78e95b8a2cb076e687ae30"
-[[package]]
-name = "rodio"
-version = "0.17.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3b1bb7b48ee48471f55da122c0044fcc7600cfcc85db88240b89cb832935e611"
-dependencies = [
- "cpal",
- "lewton",
-]
-
[[package]]
name = "ron"
version = "0.8.1"
@@ -3542,37 +3617,24 @@ dependencies = [
"winapi-util",
]
-[[package]]
-name = "scoped-tls"
-version = "1.0.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e1cf6437eb19a8f4a6cc0f7dca544973b0b78843adbfeb3683d1a94a0024a294"
-
[[package]]
name = "scopeguard"
version = "1.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49"
-[[package]]
-name = "sctk-adwaita"
-version = "0.8.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "82b2eaf3a5b264a521b988b2e73042e742df700c4f962cde845d1541adb46550"
-dependencies = [
- "ab_glyph",
- "log",
- "memmap2",
- "smithay-client-toolkit",
- "tiny-skia",
-]
-
[[package]]
name = "semver"
version = "1.0.22"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "92d43fe69e652f3df9bdc2b85b2854a0825b86e4fb76bc44d945137d053639ca"
+[[package]]
+name = "send_wrapper"
+version = "0.6.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cd0b0ec5f1c1ca621c432a25813d8d60c88abe6d3e08a3eb9cf37d97a0fe3d73"
+
[[package]]
name = "serde"
version = "1.0.197"
@@ -3590,7 +3652,7 @@ checksum = "7eb0b34b42edc17f6b7cac84a52a1c5f0e1bb2227e997ca9011ea3dd34e8610b"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.53",
+ "syn 2.0.55",
]
[[package]]
@@ -3665,31 +3727,6 @@ dependencies = [
"serde",
]
-[[package]]
-name = "smithay-client-toolkit"
-version = "0.18.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "922fd3eeab3bd820d76537ce8f582b1cf951eceb5475c28500c7457d9d17f53a"
-dependencies = [
- "bitflags 2.5.0",
- "calloop",
- "calloop-wayland-source",
- "cursor-icon",
- "libc",
- "log",
- "memmap2",
- "rustix",
- "thiserror",
- "wayland-backend",
- "wayland-client",
- "wayland-csd-frame",
- "wayland-cursor",
- "wayland-protocols",
- "wayland-protocols-wlr",
- "wayland-scanner",
- "xkeysym",
-]
-
[[package]]
name = "smol_str"
version = "0.2.1"
@@ -3726,18 +3763,83 @@ version = "1.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f"
-[[package]]
-name = "strict-num"
-version = "0.1.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6637bab7722d379c8b41ba849228d680cc12d0a45ba1fa2b48f2a30577a06731"
-
[[package]]
name = "svg_fmt"
version = "0.4.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f83ba502a3265efb76efb89b0a2f7782ad6f2675015d4ce37e4b547dda42b499"
+[[package]]
+name = "symphonia"
+version = "0.5.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "815c942ae7ee74737bb00f965fa5b5a2ac2ce7b6c01c0cc169bbeaf7abd5f5a9"
+dependencies = [
+ "lazy_static",
+ "symphonia-codec-vorbis",
+ "symphonia-core",
+ "symphonia-format-ogg",
+ "symphonia-metadata",
+]
+
+[[package]]
+name = "symphonia-codec-vorbis"
+version = "0.5.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5a98765fb46a0a6732b007f7e2870c2129b6f78d87db7987e6533c8f164a9f30"
+dependencies = [
+ "log",
+ "symphonia-core",
+ "symphonia-utils-xiph",
+]
+
+[[package]]
+name = "symphonia-core"
+version = "0.5.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "798306779e3dc7d5231bd5691f5a813496dc79d3f56bf82e25789f2094e022c3"
+dependencies = [
+ "arrayvec",
+ "bitflags 1.3.2",
+ "bytemuck",
+ "lazy_static",
+ "log",
+]
+
+[[package]]
+name = "symphonia-format-ogg"
+version = "0.5.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ada3505789516bcf00fc1157c67729eded428b455c27ca370e41f4d785bfa931"
+dependencies = [
+ "log",
+ "symphonia-core",
+ "symphonia-metadata",
+ "symphonia-utils-xiph",
+]
+
+[[package]]
+name = "symphonia-metadata"
+version = "0.5.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bc622b9841a10089c5b18e99eb904f4341615d5aa55bbf4eedde1be721a4023c"
+dependencies = [
+ "encoding_rs",
+ "lazy_static",
+ "log",
+ "symphonia-core",
+]
+
+[[package]]
+name = "symphonia-utils-xiph"
+version = "0.5.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "484472580fa49991afda5f6550ece662237b00c6f562c7d9638d1b086ed010fe"
+dependencies = [
+ "symphonia-core",
+ "symphonia-metadata",
+]
+
[[package]]
name = "syn"
version = "1.0.109"
@@ -3751,9 +3853,9 @@ dependencies = [
[[package]]
name = "syn"
-version = "2.0.53"
+version = "2.0.55"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7383cd0e49fff4b6b90ca5670bfd3e9d6a733b3f90c686605aa7eec8c4996032"
+checksum = "002a1b3dbf967edfafc32655d0f377ab0bb7b994aa1d32c8cc7e9b8bf3ebb8f0"
dependencies = [
"proc-macro2",
"quote",
@@ -3812,7 +3914,7 @@ checksum = "c61f3ba182994efc43764a46c018c347bc492c79f024e705f46567b418f6d4f7"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.53",
+ "syn 2.0.55",
]
[[package]]
@@ -3836,31 +3938,6 @@ dependencies = [
"weezl",
]
-[[package]]
-name = "tiny-skia"
-version = "0.11.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "83d13394d44dae3207b52a326c0c85a8bf87f1541f23b0d143811088497b09ab"
-dependencies = [
- "arrayref",
- "arrayvec",
- "bytemuck",
- "cfg-if",
- "log",
- "tiny-skia-path",
-]
-
-[[package]]
-name = "tiny-skia-path"
-version = "0.11.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9c9e7fc0c2e86a30b117d0462aa261b72b7a99b7ebd7deb3a14ceda95c5bdc93"
-dependencies = [
- "arrayref",
- "bytemuck",
- "strict-num",
-]
-
[[package]]
name = "tinyvec"
version = "1.6.0"
@@ -3876,6 +3953,15 @@ version = "0.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20"
+[[package]]
+name = "toml"
+version = "0.5.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f4f7f0dd8d50a853a531c426359045b1998f04219d88799810762cd4ad314234"
+dependencies = [
+ "serde",
+]
+
[[package]]
name = "toml_datetime"
version = "0.6.5"
@@ -3912,7 +3998,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.53",
+ "syn 2.0.55",
]
[[package]]
@@ -3987,9 +4073,15 @@ name = "ttt-ce"
version = "0.1.0"
dependencies = [
"bevy",
- "bevy_dylib",
+ "bevy_asset_loader",
"bevy_editor_pls",
+ "bevy_kira_audio",
"bevy_xpbd_3d",
+ "embed-resource",
+ "image",
+ "rand",
+ "webbrowser",
+ "winit",
]
[[package]]
@@ -4065,6 +4157,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a183cf7feeba97b4dd1c0d46788634f6221d87fa961b305bed08c851829efcc0"
dependencies = [
"getrandom",
+ "rand",
"serde",
]
@@ -4086,6 +4179,26 @@ version = "0.9.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f"
+[[package]]
+name = "vswhom"
+version = "0.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "be979b7f07507105799e854203b470ff7c78a1639e330a58f183b5fea574608b"
+dependencies = [
+ "libc",
+ "vswhom-sys",
+]
+
+[[package]]
+name = "vswhom-sys"
+version = "0.1.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d3b17ae1f6c8a2b28506cd96d412eebf83b4a0ff2cbefeeb952f2f9dfa44ba18"
+dependencies = [
+ "cc",
+ "libc",
+]
+
[[package]]
name = "walkdir"
version = "2.5.0"
@@ -4123,7 +4236,7 @@ dependencies = [
"once_cell",
"proc-macro2",
"quote",
- "syn 2.0.53",
+ "syn 2.0.55",
"wasm-bindgen-shared",
]
@@ -4157,7 +4270,7 @@ checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.53",
+ "syn 2.0.55",
"wasm-bindgen-backend",
"wasm-bindgen-shared",
]
@@ -4168,114 +4281,6 @@ version = "0.2.92"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "af190c94f2773fdb3729c55b007a722abb5384da03bc0986df4c289bf5567e96"
-[[package]]
-name = "wayland-backend"
-version = "0.3.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9d50fa61ce90d76474c87f5fc002828d81b32677340112b4ef08079a9d459a40"
-dependencies = [
- "cc",
- "downcast-rs",
- "rustix",
- "scoped-tls",
- "smallvec",
- "wayland-sys",
-]
-
-[[package]]
-name = "wayland-client"
-version = "0.31.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "82fb96ee935c2cea6668ccb470fb7771f6215d1691746c2d896b447a00ad3f1f"
-dependencies = [
- "bitflags 2.5.0",
- "rustix",
- "wayland-backend",
- "wayland-scanner",
-]
-
-[[package]]
-name = "wayland-csd-frame"
-version = "0.3.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "625c5029dbd43d25e6aa9615e88b829a5cad13b2819c4ae129fdbb7c31ab4c7e"
-dependencies = [
- "bitflags 2.5.0",
- "cursor-icon",
- "wayland-backend",
-]
-
-[[package]]
-name = "wayland-cursor"
-version = "0.31.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "71ce5fa868dd13d11a0d04c5e2e65726d0897be8de247c0c5a65886e283231ba"
-dependencies = [
- "rustix",
- "wayland-client",
- "xcursor",
-]
-
-[[package]]
-name = "wayland-protocols"
-version = "0.31.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8f81f365b8b4a97f422ac0e8737c438024b5951734506b0e1d775c73030561f4"
-dependencies = [
- "bitflags 2.5.0",
- "wayland-backend",
- "wayland-client",
- "wayland-scanner",
-]
-
-[[package]]
-name = "wayland-protocols-plasma"
-version = "0.2.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "23803551115ff9ea9bce586860c5c5a971e360825a0309264102a9495a5ff479"
-dependencies = [
- "bitflags 2.5.0",
- "wayland-backend",
- "wayland-client",
- "wayland-protocols",
- "wayland-scanner",
-]
-
-[[package]]
-name = "wayland-protocols-wlr"
-version = "0.2.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ad1f61b76b6c2d8742e10f9ba5c3737f6530b4c243132c2a2ccc8aa96fe25cd6"
-dependencies = [
- "bitflags 2.5.0",
- "wayland-backend",
- "wayland-client",
- "wayland-protocols",
- "wayland-scanner",
-]
-
-[[package]]
-name = "wayland-scanner"
-version = "0.31.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "63b3a62929287001986fb58c789dce9b67604a397c15c611ad9f747300b6c283"
-dependencies = [
- "proc-macro2",
- "quick-xml",
- "quote",
-]
-
-[[package]]
-name = "wayland-sys"
-version = "0.31.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "15a0c8eaff5216d07f226cb7a549159267f3467b289d9a2e52fd3ef5aae2b7af"
-dependencies = [
- "dlib",
- "log",
- "pkg-config",
-]
-
[[package]]
name = "web-sys"
version = "0.3.69"
@@ -4758,7 +4763,6 @@ version = "0.29.15"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0d59ad965a635657faf09c8f062badd885748428933dad8e8bdd64064d92e5ca"
dependencies = [
- "ahash",
"android-activity",
"atomic-waker",
"bitflags 2.5.0",
@@ -4772,7 +4776,6 @@ dependencies = [
"js-sys",
"libc",
"log",
- "memmap2",
"ndk",
"ndk-sys",
"objc2 0.4.1",
@@ -4782,16 +4785,10 @@ dependencies = [
"raw-window-handle 0.6.0",
"redox_syscall 0.3.5",
"rustix",
- "sctk-adwaita",
- "smithay-client-toolkit",
"smol_str",
"unicode-segmentation",
"wasm-bindgen",
"wasm-bindgen-futures",
- "wayland-backend",
- "wayland-client",
- "wayland-protocols",
- "wayland-protocols-plasma",
"web-sys",
"web-time",
"windows-sys 0.48.0",
@@ -4809,6 +4806,15 @@ dependencies = [
"memchr",
]
+[[package]]
+name = "winreg"
+version = "0.10.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "80d0f4e272c85def139476380b12f9ac60926689dd2e01d4923222f40580869d"
+dependencies = [
+ "winapi",
+]
+
[[package]]
name = "x11-dl"
version = "2.21.0"
@@ -4841,12 +4847,6 @@ version = "0.13.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e63e71c4b8bd9ffec2c963173a4dc4cbde9ee96961d4fcb4429db9929b606c34"
-[[package]]
-name = "xcursor"
-version = "0.3.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6a0ccd7b4a5345edfcd0c3535718a4e9ff7798ffc536bb5b5a0e26ff84732911"
-
[[package]]
name = "xi-unicode"
version = "0.3.0"
@@ -4895,5 +4895,5 @@ checksum = "9ce1b18ccd8e73a9321186f97e46f9f04b778851177567b1975109d26a08d2a6"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.53",
+ "syn 2.0.55",
]
diff --git a/Cargo.toml b/Cargo.toml
index e9b448c..d5926f6 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -1,22 +1,77 @@
[package]
-name = "ttt-ce"
+name = "ttt-ce" # ToDo
version = "0.1.0"
+publish = false
+authors = ["Mikolaj Wojciech 'Nimfer' Gorski"] # ToDo: you are the author ;)
edition = "2021"
+exclude = ["dist", "build", "assets", "credits"]
-# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
+[workspace]
+members = ["mobile"]
-# Enable a small amount of optimization in debug mode
-[profile.dev]
-opt-level = 1
-
-# Enable high optimizations for dependencies (incl. Bevy), but not for our code:
[profile.dev.package."*"]
opt-level = 3
+[profile.dev]
+opt-level = 1
+# This is used by trunk as it doesn't support custom profiles: https://github.com/trunk-rs/trunk/issues/605
+# xbuild also uses this profile for building android AABs because I couldn't find a configuration for it
+[profile.release]
+opt-level = "s"
+lto = true
+codegen-units = 1
+strip = true
+
+# Profile for distribution
+[profile.dist]
+inherits = "release"
+opt-level = 3
+lto = true
+codegen-units = 1
+strip = true
+
+[features]
+dev = [
+ "bevy/dynamic_linking",
+]
+
+# All of Bevy's default features exept for the audio related ones (bevy_audio, vorbis), since they clash with bevy_kira_audio
+# and android_shared_stdcxx, since that is covered in `mobile`
[dependencies]
-bevy = { version = "0.13.1", features = ["wayland"]}
-bevy_dylib = "0.13.1"
+bevy = { version = "0.13", default-features = false, features = [
+ "animation",
+ "bevy_asset",
+ "bevy_gilrs",
+ "bevy_scene",
+ "bevy_winit",
+ "bevy_core_pipeline",
+ "bevy_pbr",
+ "bevy_gltf",
+ "bevy_render",
+ "bevy_sprite",
+ "bevy_text",
+ "bevy_ui",
+ "multi-threaded",
+ "png",
+ "hdr",
+ "x11",
+ "bevy_gizmos",
+ "tonemapping_luts",
+ "default_font",
+ "webgl2",
+ "bevy_debug_stepping",
+] }
+bevy_kira_audio = { version = "0.19" }
+bevy_asset_loader = { version = "0.20" }
+rand = { version = "0.8.3" }
+webbrowser = { version = "0.8", features = ["hardened"] }
+
+# keep the following in sync with Bevy's dependencies
+winit = { version = "0.29", default-features = false }
+image = { version = "0.24", default-features = false }
bevy_editor_pls = "0.8.1"
bevy_xpbd_3d = {git = "https://git.opencodebox.com/MikolajG/bevy_xpbd", branch = "reflect-serialize"}
+[build-dependencies]
+embed-resource = "1"
diff --git a/LICENSE b/LICENSE
index f288702..0e259d4 100644
--- a/LICENSE
+++ b/LICENSE
@@ -1,674 +1,121 @@
- GNU GENERAL PUBLIC LICENSE
- Version 3, 29 June 2007
-
- Copyright (C) 2007 Free Software Foundation, Inc.
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
- Preamble
-
- The GNU General Public License is a free, copyleft license for
-software and other kinds of works.
-
- The licenses for most software and other practical works are designed
-to take away your freedom to share and change the works. By contrast,
-the GNU General Public License is intended to guarantee your freedom to
-share and change all versions of a program--to make sure it remains free
-software for all its users. We, the Free Software Foundation, use the
-GNU General Public License for most of our software; it applies also to
-any other work released this way by its authors. You can apply it to
-your programs, too.
-
- When we speak of free software, we are referring to freedom, 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
-them if you wish), that you receive source code or can get it if you
-want it, that you can change the software or use pieces of it in new
-free programs, and that you know you can do these things.
-
- To protect your rights, we need to prevent others from denying you
-these rights or asking you to surrender the rights. Therefore, you have
-certain responsibilities if you distribute copies of the software, or if
-you modify it: responsibilities to respect the freedom of others.
-
- For example, if you distribute copies of such a program, whether
-gratis or for a fee, you must pass on to the recipients the same
-freedoms that you received. You must make sure that they, too, receive
-or can get the source code. And you must show them these terms so they
-know their rights.
-
- Developers that use the GNU GPL protect your rights with two steps:
-(1) assert copyright on the software, and (2) offer you this License
-giving you legal permission to copy, distribute and/or modify it.
-
- For the developers' and authors' protection, the GPL clearly explains
-that there is no warranty for this free software. For both users' and
-authors' sake, the GPL requires that modified versions be marked as
-changed, so that their problems will not be attributed erroneously to
-authors of previous versions.
-
- Some devices are designed to deny users access to install or run
-modified versions of the software inside them, although the manufacturer
-can do so. This is fundamentally incompatible with the aim of
-protecting users' freedom to change the software. The systematic
-pattern of such abuse occurs in the area of products for individuals to
-use, which is precisely where it is most unacceptable. Therefore, we
-have designed this version of the GPL to prohibit the practice for those
-products. If such problems arise substantially in other domains, we
-stand ready to extend this provision to those domains in future versions
-of the GPL, as needed to protect the freedom of users.
-
- Finally, every program is threatened constantly by software patents.
-States should not allow patents to restrict development and use of
-software on general-purpose computers, but in those that do, we wish to
-avoid the special danger that patents applied to a free program could
-make it effectively proprietary. To prevent this, the GPL assures that
-patents cannot be used to render the program non-free.
-
- The precise terms and conditions for copying, distribution and
-modification follow.
-
- TERMS AND CONDITIONS
-
- 0. Definitions.
-
- "This License" refers to version 3 of the GNU General Public License.
-
- "Copyright" also means copyright-like laws that apply to other kinds of
-works, such as semiconductor masks.
-
- "The Program" refers to any copyrightable work licensed under this
-License. Each licensee is addressed as "you". "Licensees" and
-"recipients" may be individuals or organizations.
-
- To "modify" a work means to copy from or adapt all or part of the work
-in a fashion requiring copyright permission, other than the making of an
-exact copy. The resulting work is called a "modified version" of the
-earlier work or a work "based on" the earlier work.
-
- A "covered work" means either the unmodified Program or a work based
-on the Program.
-
- To "propagate" a work means to do anything with it that, without
-permission, would make you directly or secondarily liable for
-infringement under applicable copyright law, except executing it on a
-computer or modifying a private copy. Propagation includes copying,
-distribution (with or without modification), making available to the
-public, and in some countries other activities as well.
-
- To "convey" a work means any kind of propagation that enables other
-parties to make or receive copies. Mere interaction with a user through
-a computer network, with no transfer of a copy, is not conveying.
-
- An interactive user interface displays "Appropriate Legal Notices"
-to the extent that it includes a convenient and prominently visible
-feature that (1) displays an appropriate copyright notice, and (2)
-tells the user that there is no warranty for the work (except to the
-extent that warranties are provided), that licensees may convey the
-work under this License, and how to view a copy of this License. If
-the interface presents a list of user commands or options, such as a
-menu, a prominent item in the list meets this criterion.
-
- 1. Source Code.
-
- The "source code" for a work means the preferred form of the work
-for making modifications to it. "Object code" means any non-source
-form of a work.
-
- A "Standard Interface" means an interface that either is an official
-standard defined by a recognized standards body, or, in the case of
-interfaces specified for a particular programming language, one that
-is widely used among developers working in that language.
-
- The "System Libraries" of an executable work include anything, other
-than the work as a whole, that (a) is included in the normal form of
-packaging a Major Component, but which is not part of that Major
-Component, and (b) serves only to enable use of the work with that
-Major Component, or to implement a Standard Interface for which an
-implementation is available to the public in source code form. A
-"Major Component", in this context, means a major essential component
-(kernel, window system, and so on) of the specific operating system
-(if any) on which the executable work runs, or a compiler used to
-produce the work, or an object code interpreter used to run it.
-
- The "Corresponding Source" for a work in object code form means all
-the source code needed to generate, install, and (for an executable
-work) run the object code and to modify the work, including scripts to
-control those activities. However, it does not include the work's
-System Libraries, or general-purpose tools or generally available free
-programs which are used unmodified in performing those activities but
-which are not part of the work. For example, Corresponding Source
-includes interface definition files associated with source files for
-the work, and the source code for shared libraries and dynamically
-linked subprograms that the work is specifically designed to require,
-such as by intimate data communication or control flow between those
-subprograms and other parts of the work.
-
- The Corresponding Source need not include anything that users
-can regenerate automatically from other parts of the Corresponding
-Source.
-
- The Corresponding Source for a work in source code form is that
-same work.
-
- 2. Basic Permissions.
-
- All rights granted under this License are granted for the term of
-copyright on the Program, and are irrevocable provided the stated
-conditions are met. This License explicitly affirms your unlimited
-permission to run the unmodified Program. The output from running a
-covered work is covered by this License only if the output, given its
-content, constitutes a covered work. This License acknowledges your
-rights of fair use or other equivalent, as provided by copyright law.
-
- You may make, run and propagate covered works that you do not
-convey, without conditions so long as your license otherwise remains
-in force. You may convey covered works to others for the sole purpose
-of having them make modifications exclusively for you, or provide you
-with facilities for running those works, provided that you comply with
-the terms of this License in conveying all material for which you do
-not control copyright. Those thus making or running the covered works
-for you must do so exclusively on your behalf, under your direction
-and control, on terms that prohibit them from making any copies of
-your copyrighted material outside their relationship with you.
-
- Conveying under any other circumstances is permitted solely under
-the conditions stated below. Sublicensing is not allowed; section 10
-makes it unnecessary.
-
- 3. Protecting Users' Legal Rights From Anti-Circumvention Law.
-
- No covered work shall be deemed part of an effective technological
-measure under any applicable law fulfilling obligations under article
-11 of the WIPO copyright treaty adopted on 20 December 1996, or
-similar laws prohibiting or restricting circumvention of such
-measures.
-
- When you convey a covered work, you waive any legal power to forbid
-circumvention of technological measures to the extent such circumvention
-is effected by exercising rights under this License with respect to
-the covered work, and you disclaim any intention to limit operation or
-modification of the work as a means of enforcing, against the work's
-users, your or third parties' legal rights to forbid circumvention of
-technological measures.
-
- 4. Conveying Verbatim Copies.
-
- You may convey verbatim copies of the Program's source code as you
-receive it, in any medium, provided that you conspicuously and
-appropriately publish on each copy an appropriate copyright notice;
-keep intact all notices stating that this License and any
-non-permissive terms added in accord with section 7 apply to the code;
-keep intact all notices of the absence of any warranty; and give all
-recipients a copy of this License along with the Program.
-
- You may charge any price or no price for each copy that you convey,
-and you may offer support or warranty protection for a fee.
-
- 5. Conveying Modified Source Versions.
-
- You may convey a work based on the Program, or the modifications to
-produce it from the Program, in the form of source code under the
-terms of section 4, provided that you also meet all of these conditions:
-
- a) The work must carry prominent notices stating that you modified
- it, and giving a relevant date.
-
- b) The work must carry prominent notices stating that it is
- released under this License and any conditions added under section
- 7. This requirement modifies the requirement in section 4 to
- "keep intact all notices".
-
- c) You must license the entire work, as a whole, under this
- License to anyone who comes into possession of a copy. This
- License will therefore apply, along with any applicable section 7
- additional terms, to the whole of the work, and all its parts,
- regardless of how they are packaged. This License gives no
- permission to license the work in any other way, but it does not
- invalidate such permission if you have separately received it.
-
- d) If the work has interactive user interfaces, each must display
- Appropriate Legal Notices; however, if the Program has interactive
- interfaces that do not display Appropriate Legal Notices, your
- work need not make them do so.
-
- A compilation of a covered work with other separate and independent
-works, which are not by their nature extensions of the covered work,
-and which are not combined with it such as to form a larger program,
-in or on a volume of a storage or distribution medium, is called an
-"aggregate" if the compilation and its resulting copyright are not
-used to limit the access or legal rights of the compilation's users
-beyond what the individual works permit. Inclusion of a covered work
-in an aggregate does not cause this License to apply to the other
-parts of the aggregate.
-
- 6. Conveying Non-Source Forms.
-
- You may convey a covered work in object code form under the terms
-of sections 4 and 5, provided that you also convey the
-machine-readable Corresponding Source under the terms of this License,
-in one of these ways:
-
- a) Convey the object code in, or embodied in, a physical product
- (including a physical distribution medium), accompanied by the
- Corresponding Source fixed on a durable physical medium
- customarily used for software interchange.
-
- b) Convey the object code in, or embodied in, a physical product
- (including a physical distribution medium), accompanied by a
- written offer, valid for at least three years and valid for as
- long as you offer spare parts or customer support for that product
- model, to give anyone who possesses the object code either (1) a
- copy of the Corresponding Source for all the software in the
- product that is covered by this License, on a durable physical
- medium customarily used for software interchange, for a price no
- more than your reasonable cost of physically performing this
- conveying of source, or (2) access to copy the
- Corresponding Source from a network server at no charge.
-
- c) Convey individual copies of the object code with a copy of the
- written offer to provide the Corresponding Source. This
- alternative is allowed only occasionally and noncommercially, and
- only if you received the object code with such an offer, in accord
- with subsection 6b.
-
- d) Convey the object code by offering access from a designated
- place (gratis or for a charge), and offer equivalent access to the
- Corresponding Source in the same way through the same place at no
- further charge. You need not require recipients to copy the
- Corresponding Source along with the object code. If the place to
- copy the object code is a network server, the Corresponding Source
- may be on a different server (operated by you or a third party)
- that supports equivalent copying facilities, provided you maintain
- clear directions next to the object code saying where to find the
- Corresponding Source. Regardless of what server hosts the
- Corresponding Source, you remain obligated to ensure that it is
- available for as long as needed to satisfy these requirements.
-
- e) Convey the object code using peer-to-peer transmission, provided
- you inform other peers where the object code and Corresponding
- Source of the work are being offered to the general public at no
- charge under subsection 6d.
-
- A separable portion of the object code, whose source code is excluded
-from the Corresponding Source as a System Library, need not be
-included in conveying the object code work.
-
- A "User Product" is either (1) a "consumer product", which means any
-tangible personal property which is normally used for personal, family,
-or household purposes, or (2) anything designed or sold for incorporation
-into a dwelling. In determining whether a product is a consumer product,
-doubtful cases shall be resolved in favor of coverage. For a particular
-product received by a particular user, "normally used" refers to a
-typical or common use of that class of product, regardless of the status
-of the particular user or of the way in which the particular user
-actually uses, or expects or is expected to use, the product. A product
-is a consumer product regardless of whether the product has substantial
-commercial, industrial or non-consumer uses, unless such uses represent
-the only significant mode of use of the product.
-
- "Installation Information" for a User Product means any methods,
-procedures, authorization keys, or other information required to install
-and execute modified versions of a covered work in that User Product from
-a modified version of its Corresponding Source. The information must
-suffice to ensure that the continued functioning of the modified object
-code is in no case prevented or interfered with solely because
-modification has been made.
-
- If you convey an object code work under this section in, or with, or
-specifically for use in, a User Product, and the conveying occurs as
-part of a transaction in which the right of possession and use of the
-User Product is transferred to the recipient in perpetuity or for a
-fixed term (regardless of how the transaction is characterized), the
-Corresponding Source conveyed under this section must be accompanied
-by the Installation Information. But this requirement does not apply
-if neither you nor any third party retains the ability to install
-modified object code on the User Product (for example, the work has
-been installed in ROM).
-
- The requirement to provide Installation Information does not include a
-requirement to continue to provide support service, warranty, or updates
-for a work that has been modified or installed by the recipient, or for
-the User Product in which it has been modified or installed. Access to a
-network may be denied when the modification itself materially and
-adversely affects the operation of the network or violates the rules and
-protocols for communication across the network.
-
- Corresponding Source conveyed, and Installation Information provided,
-in accord with this section must be in a format that is publicly
-documented (and with an implementation available to the public in
-source code form), and must require no special password or key for
-unpacking, reading or copying.
-
- 7. Additional Terms.
-
- "Additional permissions" are terms that supplement the terms of this
-License by making exceptions from one or more of its conditions.
-Additional permissions that are applicable to the entire Program shall
-be treated as though they were included in this License, to the extent
-that they are valid under applicable law. If additional permissions
-apply only to part of the Program, that part may be used separately
-under those permissions, but the entire Program remains governed by
-this License without regard to the additional permissions.
-
- When you convey a copy of a covered work, you may at your option
-remove any additional permissions from that copy, or from any part of
-it. (Additional permissions may be written to require their own
-removal in certain cases when you modify the work.) You may place
-additional permissions on material, added by you to a covered work,
-for which you have or can give appropriate copyright permission.
-
- Notwithstanding any other provision of this License, for material you
-add to a covered work, you may (if authorized by the copyright holders of
-that material) supplement the terms of this License with terms:
-
- a) Disclaiming warranty or limiting liability differently from the
- terms of sections 15 and 16 of this License; or
-
- b) Requiring preservation of specified reasonable legal notices or
- author attributions in that material or in the Appropriate Legal
- Notices displayed by works containing it; or
-
- c) Prohibiting misrepresentation of the origin of that material, or
- requiring that modified versions of such material be marked in
- reasonable ways as different from the original version; or
-
- d) Limiting the use for publicity purposes of names of licensors or
- authors of the material; or
-
- e) Declining to grant rights under trademark law for use of some
- trade names, trademarks, or service marks; or
-
- f) Requiring indemnification of licensors and authors of that
- material by anyone who conveys the material (or modified versions of
- it) with contractual assumptions of liability to the recipient, for
- any liability that these contractual assumptions directly impose on
- those licensors and authors.
-
- All other non-permissive additional terms are considered "further
-restrictions" within the meaning of section 10. If the Program as you
-received it, or any part of it, contains a notice stating that it is
-governed by this License along with a term that is a further
-restriction, you may remove that term. If a license document contains
-a further restriction but permits relicensing or conveying under this
-License, you may add to a covered work material governed by the terms
-of that license document, provided that the further restriction does
-not survive such relicensing or conveying.
-
- If you add terms to a covered work in accord with this section, you
-must place, in the relevant source files, a statement of the
-additional terms that apply to those files, or a notice indicating
-where to find the applicable terms.
-
- Additional terms, permissive or non-permissive, may be stated in the
-form of a separately written license, or stated as exceptions;
-the above requirements apply either way.
-
- 8. Termination.
-
- You may not propagate or modify a covered work except as expressly
-provided under this License. Any attempt otherwise to propagate or
-modify it is void, and will automatically terminate your rights under
-this License (including any patent licenses granted under the third
-paragraph of section 11).
-
- However, if you cease all violation of this License, then your
-license from a particular copyright holder is reinstated (a)
-provisionally, unless and until the copyright holder explicitly and
-finally terminates your license, and (b) permanently, if the copyright
-holder fails to notify you of the violation by some reasonable means
-prior to 60 days after the cessation.
-
- Moreover, your license from a particular copyright holder is
-reinstated permanently if the copyright holder notifies you of the
-violation by some reasonable means, this is the first time you have
-received notice of violation of this License (for any work) from that
-copyright holder, and you cure the violation prior to 30 days after
-your receipt of the notice.
-
- Termination of your rights under this section does not terminate the
-licenses of parties who have received copies or rights from you under
-this License. If your rights have been terminated and not permanently
-reinstated, you do not qualify to receive new licenses for the same
-material under section 10.
-
- 9. Acceptance Not Required for Having Copies.
-
- You are not required to accept this License in order to receive or
-run a copy of the Program. Ancillary propagation of a covered work
-occurring solely as a consequence of using peer-to-peer transmission
-to receive a copy likewise does not require acceptance. However,
-nothing other than this License grants you permission to propagate or
-modify any covered work. These actions infringe copyright if you do
-not accept this License. Therefore, by modifying or propagating a
-covered work, you indicate your acceptance of this License to do so.
-
- 10. Automatic Licensing of Downstream Recipients.
-
- Each time you convey a covered work, the recipient automatically
-receives a license from the original licensors, to run, modify and
-propagate that work, subject to this License. You are not responsible
-for enforcing compliance by third parties with this License.
-
- An "entity transaction" is a transaction transferring control of an
-organization, or substantially all assets of one, or subdividing an
-organization, or merging organizations. If propagation of a covered
-work results from an entity transaction, each party to that
-transaction who receives a copy of the work also receives whatever
-licenses to the work the party's predecessor in interest had or could
-give under the previous paragraph, plus a right to possession of the
-Corresponding Source of the work from the predecessor in interest, if
-the predecessor has it or can get it with reasonable efforts.
-
- You may not impose any further restrictions on the exercise of the
-rights granted or affirmed under this License. For example, you may
-not impose a license fee, royalty, or other charge for exercise of
-rights granted under this License, and you may not initiate litigation
-(including a cross-claim or counterclaim in a lawsuit) alleging that
-any patent claim is infringed by making, using, selling, offering for
-sale, or importing the Program or any portion of it.
-
- 11. Patents.
-
- A "contributor" is a copyright holder who authorizes use under this
-License of the Program or a work on which the Program is based. The
-work thus licensed is called the contributor's "contributor version".
-
- A contributor's "essential patent claims" are all patent claims
-owned or controlled by the contributor, whether already acquired or
-hereafter acquired, that would be infringed by some manner, permitted
-by this License, of making, using, or selling its contributor version,
-but do not include claims that would be infringed only as a
-consequence of further modification of the contributor version. For
-purposes of this definition, "control" includes the right to grant
-patent sublicenses in a manner consistent with the requirements of
-this License.
-
- Each contributor grants you a non-exclusive, worldwide, royalty-free
-patent license under the contributor's essential patent claims, to
-make, use, sell, offer for sale, import and otherwise run, modify and
-propagate the contents of its contributor version.
-
- In the following three paragraphs, a "patent license" is any express
-agreement or commitment, however denominated, not to enforce a patent
-(such as an express permission to practice a patent or covenant not to
-sue for patent infringement). To "grant" such a patent license to a
-party means to make such an agreement or commitment not to enforce a
-patent against the party.
-
- If you convey a covered work, knowingly relying on a patent license,
-and the Corresponding Source of the work is not available for anyone
-to copy, free of charge and under the terms of this License, through a
-publicly available network server or other readily accessible means,
-then you must either (1) cause the Corresponding Source to be so
-available, or (2) arrange to deprive yourself of the benefit of the
-patent license for this particular work, or (3) arrange, in a manner
-consistent with the requirements of this License, to extend the patent
-license to downstream recipients. "Knowingly relying" means you have
-actual knowledge that, but for the patent license, your conveying the
-covered work in a country, or your recipient's use of the covered work
-in a country, would infringe one or more identifiable patents in that
-country that you have reason to believe are valid.
-
- If, pursuant to or in connection with a single transaction or
-arrangement, you convey, or propagate by procuring conveyance of, a
-covered work, and grant a patent license to some of the parties
-receiving the covered work authorizing them to use, propagate, modify
-or convey a specific copy of the covered work, then the patent license
-you grant is automatically extended to all recipients of the covered
-work and works based on it.
-
- A patent license is "discriminatory" if it does not include within
-the scope of its coverage, prohibits the exercise of, or is
-conditioned on the non-exercise of one or more of the rights that are
-specifically granted under this License. You may not convey a covered
-work if you are a party to an arrangement with a third party that is
-in the business of distributing software, under which you make payment
-to the third party based on the extent of your activity of conveying
-the work, and under which the third party grants, to any of the
-parties who would receive the covered work from you, a discriminatory
-patent license (a) in connection with copies of the covered work
-conveyed by you (or copies made from those copies), or (b) primarily
-for and in connection with specific products or compilations that
-contain the covered work, unless you entered into that arrangement,
-or that patent license was granted, prior to 28 March 2007.
-
- Nothing in this License shall be construed as excluding or limiting
-any implied license or other defenses to infringement that may
-otherwise be available to you under applicable patent law.
-
- 12. No Surrender of Others' Freedom.
-
- If 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 convey a
-covered work so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you may
-not convey it at all. For example, if you agree to terms that obligate you
-to collect a royalty for further conveying from those to whom you convey
-the Program, the only way you could satisfy both those terms and this
-License would be to refrain entirely from conveying the Program.
-
- 13. Use with the GNU Affero General Public License.
-
- Notwithstanding any other provision of this License, you have
-permission to link or combine any covered work with a work licensed
-under version 3 of the GNU Affero General Public License into a single
-combined work, and to convey the resulting work. The terms of this
-License will continue to apply to the part which is the covered work,
-but the special requirements of the GNU Affero General Public License,
-section 13, concerning interaction through a network will apply to the
-combination as such.
-
- 14. Revised Versions of this License.
-
- The Free Software Foundation may publish revised and/or new versions of
-the GNU 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
-Program specifies that a certain numbered version of the GNU General
-Public License "or any later version" applies to it, you have the
-option of following the terms and conditions either of that numbered
-version or of any later version published by the Free Software
-Foundation. If the Program does not specify a version number of the
-GNU General Public License, you may choose any version ever published
-by the Free Software Foundation.
-
- If the Program specifies that a proxy can decide which future
-versions of the GNU General Public License can be used, that proxy's
-public statement of acceptance of a version permanently authorizes you
-to choose that version for the Program.
-
- Later license versions may give you additional or different
-permissions. However, no additional obligations are imposed on any
-author or copyright holder as a result of your choosing to follow a
-later version.
-
- 15. Disclaimer of Warranty.
-
- THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
-APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
-HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "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 PROGRAM
-IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
-ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
-
- 16. Limitation of Liability.
-
- IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
-WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
-THE PROGRAM 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 PROGRAM (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 PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
-EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
-SUCH DAMAGES.
-
- 17. Interpretation of Sections 15 and 16.
-
- If the disclaimer of warranty and limitation of liability provided
-above cannot be given local legal effect according to their terms,
-reviewing courts shall apply local law that most closely approximates
-an absolute waiver of all civil liability in connection with the
-Program, unless a warranty or assumption of liability accompanies a
-copy of the Program in return for a fee.
-
- END OF TERMS AND CONDITIONS
-
- How to Apply These Terms to Your New Programs
-
- If you develop a new program, and you want it to be of the greatest
-possible use to the public, the best way to achieve this is to make it
-free software which everyone can redistribute and change under these terms.
-
- To do so, attach the following notices to the program. It is safest
-to attach them to the start of each source file to most effectively
-state 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 program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 3 of the License, or
- (at your option) any later version.
-
- This program 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 General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see .
-
-Also add information on how to contact you by electronic and paper mail.
-
- If the program does terminal interaction, make it output a short
-notice like this when it starts in an interactive mode:
-
- Copyright (C)
- This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
- This is free software, and you are welcome to redistribute it
- under certain conditions; type `show c' for details.
-
-The hypothetical commands `show w' and `show c' should show the appropriate
-parts of the General Public License. Of course, your program's commands
-might be different; for a GUI interface, you would use an "about box".
-
- You should also get your employer (if you work as a programmer) or school,
-if any, to sign a "copyright disclaimer" for the program, if necessary.
-For more information on this, and how to apply and follow the GNU GPL, see
-.
-
- The GNU General Public License does not permit incorporating your program
-into proprietary programs. If your program is a subroutine library, you
-may consider it more useful to permit linking proprietary applications with
-the library. If this is what you want to do, use the GNU Lesser General
-Public License instead of this License. But first, please read
-.
+Creative Commons Legal Code
+
+CC0 1.0 Universal
+
+ CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE
+ LEGAL SERVICES. DISTRIBUTION OF THIS DOCUMENT DOES NOT CREATE AN
+ ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS
+ INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES
+ REGARDING THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS
+ PROVIDED HEREUNDER, AND DISCLAIMS LIABILITY FOR DAMAGES RESULTING FROM
+ THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS PROVIDED
+ HEREUNDER.
+
+Statement of Purpose
+
+The laws of most jurisdictions throughout the world automatically confer
+exclusive Copyright and Related Rights (defined below) upon the creator
+and subsequent owner(s) (each and all, an "owner") of an original work of
+authorship and/or a database (each, a "Work").
+
+Certain owners wish to permanently relinquish those rights to a Work for
+the purpose of contributing to a commons of creative, cultural and
+scientific works ("Commons") that the public can reliably and without fear
+of later claims of infringement build upon, modify, incorporate in other
+works, reuse and redistribute as freely as possible in any form whatsoever
+and for any purposes, including without limitation commercial purposes.
+These owners may contribute to the Commons to promote the ideal of a free
+culture and the further production of creative, cultural and scientific
+works, or to gain reputation or greater distribution for their Work in
+part through the use and efforts of others.
+
+For these and/or other purposes and motivations, and without any
+expectation of additional consideration or compensation, the person
+associating CC0 with a Work (the "Affirmer"), to the extent that he or she
+is an owner of Copyright and Related Rights in the Work, voluntarily
+elects to apply CC0 to the Work and publicly distribute the Work under its
+terms, with knowledge of his or her Copyright and Related Rights in the
+Work and the meaning and intended legal effect of CC0 on those rights.
+
+1. Copyright and Related Rights. A Work made available under CC0 may be
+protected by copyright and related or neighboring rights ("Copyright and
+Related Rights"). Copyright and Related Rights include, but are not
+limited to, the following:
+
+ i. the right to reproduce, adapt, distribute, perform, display,
+ communicate, and translate a Work;
+ ii. moral rights retained by the original author(s) and/or performer(s);
+iii. publicity and privacy rights pertaining to a person's image or
+ likeness depicted in a Work;
+ iv. rights protecting against unfair competition in regards to a Work,
+ subject to the limitations in paragraph 4(a), below;
+ v. rights protecting the extraction, dissemination, use and reuse of data
+ in a Work;
+ vi. database rights (such as those arising under Directive 96/9/EC of the
+ European Parliament and of the Council of 11 March 1996 on the legal
+ protection of databases, and under any national implementation
+ thereof, including any amended or successor version of such
+ directive); and
+vii. other similar, equivalent or corresponding rights throughout the
+ world based on applicable law or treaty, and any national
+ implementations thereof.
+
+2. Waiver. To the greatest extent permitted by, but not in contravention
+of, applicable law, Affirmer hereby overtly, fully, permanently,
+irrevocably and unconditionally waives, abandons, and surrenders all of
+Affirmer's Copyright and Related Rights and associated claims and causes
+of action, whether now known or unknown (including existing as well as
+future claims and causes of action), in the Work (i) in all territories
+worldwide, (ii) for the maximum duration provided by applicable law or
+treaty (including future time extensions), (iii) in any current or future
+medium and for any number of copies, and (iv) for any purpose whatsoever,
+including without limitation commercial, advertising or promotional
+purposes (the "Waiver"). Affirmer makes the Waiver for the benefit of each
+member of the public at large and to the detriment of Affirmer's heirs and
+successors, fully intending that such Waiver shall not be subject to
+revocation, rescission, cancellation, termination, or any other legal or
+equitable action to disrupt the quiet enjoyment of the Work by the public
+as contemplated by Affirmer's express Statement of Purpose.
+
+3. Public License Fallback. Should any part of the Waiver for any reason
+be judged legally invalid or ineffective under applicable law, then the
+Waiver shall be preserved to the maximum extent permitted taking into
+account Affirmer's express Statement of Purpose. In addition, to the
+extent the Waiver is so judged Affirmer hereby grants to each affected
+person a royalty-free, non transferable, non sublicensable, non exclusive,
+irrevocable and unconditional license to exercise Affirmer's Copyright and
+Related Rights in the Work (i) in all territories worldwide, (ii) for the
+maximum duration provided by applicable law or treaty (including future
+time extensions), (iii) in any current or future medium and for any number
+of copies, and (iv) for any purpose whatsoever, including without
+limitation commercial, advertising or promotional purposes (the
+"License"). The License shall be deemed effective as of the date CC0 was
+applied by Affirmer to the Work. Should any part of the License for any
+reason be judged legally invalid or ineffective under applicable law, such
+partial invalidity or ineffectiveness shall not invalidate the remainder
+of the License, and in such case Affirmer hereby affirms that he or she
+will not (i) exercise any of his or her remaining Copyright and Related
+Rights in the Work or (ii) assert any associated claims and causes of
+action with respect to the Work, in either case contrary to Affirmer's
+express Statement of Purpose.
+
+4. Limitations and Disclaimers.
+
+ a. No trademark or patent rights held by Affirmer are waived, abandoned,
+ surrendered, licensed or otherwise affected by this document.
+ b. Affirmer offers the Work as-is and makes no representations or
+ warranties of any kind concerning the Work, express, implied,
+ statutory or otherwise, including without limitation warranties of
+ title, merchantability, fitness for a particular purpose, non
+ infringement, or the absence of latent or other defects, accuracy, or
+ the present or absence of errors, whether or not discoverable, all to
+ the greatest extent permissible under applicable law.
+ c. Affirmer disclaims responsibility for clearing rights of other persons
+ that may apply to the Work or any use thereof, including without
+ limitation any person's Copyright and Related Rights in the Work.
+ Further, Affirmer disclaims responsibility for obtaining any necessary
+ consents, permissions or other rights required for any use of the
+ Work.
+ d. Affirmer understands and acknowledges that Creative Commons is not a
+ party to this document and has no duty or obligation with respect to
+ this CC0 or use of the Work.
diff --git a/Trunk.toml b/Trunk.toml
new file mode 100644
index 0000000..36598c5
--- /dev/null
+++ b/Trunk.toml
@@ -0,0 +1,5 @@
+[build]
+public_url = "./"
+
+[serve]
+port = 8080
diff --git a/assets/icon.png b/assets/icon.png
new file mode 100644
index 0000000..ba787d7
Binary files /dev/null and b/assets/icon.png differ
diff --git a/assets/test_map.bin b/assets/test_map.bin
index 22177ca..60b861e 100644
Binary files a/assets/test_map.bin and b/assets/test_map.bin differ
diff --git a/assets/test_map.gltf b/assets/test_map.gltf
index 944a04c..0b98215 100644
--- a/assets/test_map.gltf
+++ b/assets/test_map.gltf
@@ -3,6 +3,12 @@
"generator":"Khronos glTF Blender I/O v4.0.44",
"version":"2.0"
},
+ "extensionsUsed":[
+ "KHR_texture_transform"
+ ],
+ "extensionsRequired":[
+ "KHR_texture_transform"
+ ],
"scene":0,
"scenes":[
{
@@ -14,7 +20,68 @@
3,
4,
5,
- 6
+ 6,
+ 7,
+ 8,
+ 9,
+ 10,
+ 11,
+ 12,
+ 13,
+ 14,
+ 15,
+ 16,
+ 17,
+ 18,
+ 19,
+ 20,
+ 21,
+ 22,
+ 23,
+ 24,
+ 25,
+ 26,
+ 27,
+ 28,
+ 29,
+ 30,
+ 31,
+ 32,
+ 33,
+ 34,
+ 35,
+ 36,
+ 37,
+ 38,
+ 39,
+ 40,
+ 41,
+ 42,
+ 44,
+ 46,
+ 48,
+ 49,
+ 50,
+ 51,
+ 52,
+ 53,
+ 55,
+ 58,
+ 60,
+ 64,
+ 68,
+ 70,
+ 71,
+ 72,
+ 73,
+ 74,
+ 75,
+ 76,
+ 77,
+ 78,
+ 79,
+ 80,
+ 81
]
}
],
@@ -23,63 +90,1508 @@
"mesh":0,
"name":"Cube",
"scale":[
- 10,
+ 40,
0.06824988126754761,
- 10
+ 40
]
},
{
"mesh":1,
- "name":"Cube.001",
+ "name":"PTK_ActionField_2",
+ "rotation":[
+ 0,
+ 1,
+ 0,
+ 7.549790126404332e-08
+ ],
+ "scale":[
+ 2.01033091545105,
+ 2.01033091545105,
+ 2.01033091545105
+ ],
"translation":[
- -6,
- 1.0622395277023315,
- -7.001382350921631
+ -6.549624443054199,
+ 0.47036612033843994,
+ 18.30571174621582
]
},
{
"mesh":2,
- "name":"Cube.003",
+ "name":"PTK_Bridge_Large",
+ "rotation":[
+ 0,
+ 1,
+ 0,
+ 7.549790126404332e-08
+ ],
+ "scale":[
+ 2.01033091545105,
+ 2.01033091545105,
+ 2.01033091545105
+ ],
"translation":[
- -4,
- 1.0622395277023315,
- -7.001382350921631
+ -20.36058807373047,
+ 0.2612914741039276,
+ -7.969305992126465
]
},
{
"mesh":3,
- "name":"Cube.004",
+ "name":"PTK_Bridge_Medium",
+ "rotation":[
+ 0,
+ 1,
+ 0,
+ 7.549790126404332e-08
+ ],
+ "scale":[
+ 2.01033091545105,
+ 2.01033091545105,
+ 2.01033091545105
+ ],
"translation":[
- -2,
- 1.0622395277023315,
- -7.001382350921631
+ -17.96828842163086,
+ 0.2612914741039276,
+ -7.466719627380371
]
},
{
"mesh":4,
- "name":"Cube.005",
- "translation":[
+ "name":"PTK_Bridge_Small",
+ "rotation":[
0,
- 1.0622395277023315,
- -7.001382350921631
+ 1,
+ 0,
+ 7.549790126404332e-08
+ ],
+ "scale":[
+ 2.01033091545105,
+ 2.01033091545105,
+ 2.01033091545105
+ ],
+ "translation":[
+ -16.299741744995117,
+ 0.2612914741039276,
+ -6.964138984680176
]
},
{
"mesh":5,
- "name":"Cube.006",
+ "name":"PTK_Column_Edge_Large",
+ "rotation":[
+ 0,
+ 1,
+ 0,
+ 7.549790126404332e-08
+ ],
+ "scale":[
+ 2.01033091545105,
+ 2.01033091545105,
+ 2.01033091545105
+ ],
"translation":[
- 2,
- 1.0622395277023315,
- -7.001382350921631
+ -14.611069679260254,
+ 0.04618556424975395,
+ -6.401248931884766
]
},
{
"mesh":6,
- "name":"Cube.007",
+ "name":"PTK_Column_Edge_Medium",
+ "rotation":[
+ 0,
+ 1,
+ 0,
+ 7.549790126404332e-08
+ ],
+ "scale":[
+ 2.01033091545105,
+ 2.01033091545105,
+ 2.01033091545105
+ ],
"translation":[
- -8,
- 1.0622395277023315,
- -7.001382350921631
+ -12.721352577209473,
+ 0.04618556424975395,
+ -6.421339988708496
+ ]
+ },
+ {
+ "mesh":7,
+ "name":"PTK_Column_Edge_Small",
+ "rotation":[
+ 0,
+ 1,
+ 0,
+ 7.549790126404332e-08
+ ],
+ "scale":[
+ 2.01033091545105,
+ 2.01033091545105,
+ 2.01033091545105
+ ],
+ "translation":[
+ -10.871820449829102,
+ 0.04618556424975395,
+ -6.421339988708496
+ ]
+ },
+ {
+ "mesh":8,
+ "name":"PTK_Column_Large",
+ "rotation":[
+ 0,
+ 1,
+ 0,
+ 7.549790126404332e-08
+ ],
+ "scale":[
+ 2.01033091545105,
+ 2.01033091545105,
+ 2.01033091545105
+ ],
+ "translation":[
+ -7.976941108703613,
+ 0.04618556424975395,
+ -7.446629524230957
+ ]
+ },
+ {
+ "mesh":9,
+ "name":"PTK_Column_Medium",
+ "rotation":[
+ 0,
+ 1,
+ 0,
+ 7.549790126404332e-08
+ ],
+ "scale":[
+ 2.01033091545105,
+ 2.01033091545105,
+ 2.01033091545105
+ ],
+ "translation":[
+ -5.122304439544678,
+ 0.04618556424975395,
+ -7.406414031982422
+ ]
+ },
+ {
+ "mesh":10,
+ "name":"PTK_Column_Small",
+ "rotation":[
+ 0,
+ 1,
+ 0,
+ 7.549790126404332e-08
+ ],
+ "scale":[
+ 2.01033091545105,
+ 2.01033091545105,
+ 2.01033091545105
+ ],
+ "translation":[
+ -2.287727117538452,
+ 0.04618556424975395,
+ -7.386321067810059
+ ]
+ },
+ {
+ "mesh":11,
+ "name":"PTK_Cube_1",
+ "rotation":[
+ 0,
+ 1,
+ 0,
+ 7.549790126404332e-08
+ ],
+ "scale":[
+ 2.01033091545105,
+ 2.01033091545105,
+ 2.01033091545105
+ ],
+ "translation":[
+ 0.5468485951423645,
+ 0.04618556424975395,
+ -7.446627616882324
+ ]
+ },
+ {
+ "mesh":12,
+ "name":"PTK_Cube_2",
+ "rotation":[
+ 0,
+ 1,
+ 0,
+ 7.549790126404332e-08
+ ],
+ "scale":[
+ 2.01033091545105,
+ 2.01033091545105,
+ 2.01033091545105
+ ],
+ "translation":[
+ 3.4216063022613525,
+ 0.04618556424975395,
+ -8.351269721984863
+ ]
+ },
+ {
+ "mesh":13,
+ "name":"PTK_Cuboid_1",
+ "rotation":[
+ 0,
+ 1,
+ 0,
+ 7.549790126404332e-08
+ ],
+ "scale":[
+ 2.01033091545105,
+ 2.01033091545105,
+ 2.01033091545105
+ ],
+ "translation":[
+ -27.59779167175293,
+ -0.00980047881603241,
+ -15.126084327697754
+ ]
+ },
+ {
+ "mesh":14,
+ "name":"PTK_Cuboid_2",
+ "rotation":[
+ 0,
+ 1,
+ 0,
+ 7.549790126404332e-08
+ ],
+ "scale":[
+ 2.01033091545105,
+ 2.01033091545105,
+ 2.01033091545105
+ ],
+ "translation":[
+ -27.59779167175293,
+ -0.00980047881603241,
+ -11.82913589477539
+ ]
+ },
+ {
+ "mesh":15,
+ "name":"PTK_Cuboid_3",
+ "rotation":[
+ 0,
+ 1,
+ 0,
+ 7.549790126404332e-08
+ ],
+ "scale":[
+ 2.01033091545105,
+ 2.01033091545105,
+ 2.01033091545105
+ ],
+ "translation":[
+ -27.59779167175293,
+ -0.00980047881603241,
+ -6.562076568603516
+ ]
+ },
+ {
+ "mesh":16,
+ "name":"PTK_Cuboid_4",
+ "rotation":[
+ 0,
+ 1,
+ 0,
+ 7.549790126404332e-08
+ ],
+ "scale":[
+ 2.01033091545105,
+ 2.01033091545105,
+ 2.01033091545105
+ ],
+ "translation":[
+ -27.59779167175293,
+ -0.00980047881603241,
+ 0.8560473918914795
+ ]
+ },
+ {
+ "mesh":17,
+ "name":"PTK_Cuboid_5",
+ "rotation":[
+ 0,
+ 1,
+ 0,
+ 7.549790126404332e-08
+ ],
+ "scale":[
+ 2.01033091545105,
+ 2.01033091545105,
+ 2.01033091545105
+ ],
+ "translation":[
+ -27.59779167175293,
+ -0.00980047881603241,
+ 10.46542739868164
+ ]
+ },
+ {
+ "mesh":18,
+ "name":"PTK_Ramp_Large",
+ "rotation":[
+ 0,
+ 1,
+ 0,
+ 7.549790126404332e-08
+ ],
+ "scale":[
+ 2.01033091545105,
+ 2.01033091545105,
+ 2.01033091545105
+ ],
+ "translation":[
+ -19.089351654052734,
+ 0.04618556424975395,
+ 3.0452158451080322
+ ]
+ },
+ {
+ "mesh":19,
+ "name":"PTK_Ramp_Medium",
+ "rotation":[
+ 0,
+ 1,
+ 0,
+ 7.549790126404332e-08
+ ],
+ "scale":[
+ 2.01033091545105,
+ 2.01033091545105,
+ 2.01033091545105
+ ],
+ "translation":[
+ -16.154462814331055,
+ 0.04618556424975395,
+ 7.074099540710449
+ ]
+ },
+ {
+ "mesh":20,
+ "name":"PTK_Ramp_Small",
+ "rotation":[
+ 0,
+ 1,
+ 0,
+ 7.549790126404332e-08
+ ],
+ "scale":[
+ 2.01033091545105,
+ 2.01033091545105,
+ 2.01033091545105
+ ],
+ "translation":[
+ -13.384925842285156,
+ 0.04618556424975395,
+ 11.094425201416016
+ ]
+ },
+ {
+ "mesh":21,
+ "name":"PTK_Stairs_Large",
+ "rotation":[
+ 0,
+ 1,
+ 0,
+ 7.549790126404332e-08
+ ],
+ "scale":[
+ 2.01033091545105,
+ 2.01033091545105,
+ 2.01033091545105
+ ],
+ "translation":[
+ -9.488924980163574,
+ 0.04618556424975395,
+ 3.057211399078369
+ ]
+ },
+ {
+ "mesh":22,
+ "name":"PTK_Stairs_Medium",
+ "rotation":[
+ 0,
+ 1,
+ 0,
+ 7.549790126404332e-08
+ ],
+ "scale":[
+ 2.01033091545105,
+ 2.01033091545105,
+ 2.01033091545105
+ ],
+ "translation":[
+ -6.705515384674072,
+ 0.04618556424975395,
+ 7.062811851501465
+ ]
+ },
+ {
+ "mesh":23,
+ "name":"PTK_Stairs_Small",
+ "rotation":[
+ 0,
+ 1,
+ 0,
+ 7.549790126404332e-08
+ ],
+ "scale":[
+ 2.01033091545105,
+ 2.01033091545105,
+ 2.01033091545105
+ ],
+ "translation":[
+ -3.8992855548858643,
+ 0.04618556424975395,
+ 11.131573677062988
+ ]
+ },
+ {
+ "mesh":24,
+ "name":"PTK_Wall_Large_1",
+ "rotation":[
+ 0,
+ 1,
+ 0,
+ 7.549790126404332e-08
+ ],
+ "scale":[
+ 2.01033091545105,
+ 2.01033091545105,
+ 2.01033091545105
+ ],
+ "translation":[
+ -0.05058640241622925,
+ 0.04618556424975395,
+ 14.116981506347656
+ ]
+ },
+ {
+ "mesh":25,
+ "name":"PTK_Wall_Large_2",
+ "rotation":[
+ 0,
+ 1,
+ 0,
+ 7.549790126404332e-08
+ ],
+ "scale":[
+ 2.01033091545105,
+ 2.01033091545105,
+ 2.01033091545105
+ ],
+ "translation":[
+ 0.9509013295173645,
+ 0.04618556424975395,
+ 13.151416778564453
+ ]
+ },
+ {
+ "mesh":26,
+ "name":"PTK_Wall_Large_3",
+ "rotation":[
+ 0,
+ 1,
+ 0,
+ 7.549790126404332e-08
+ ],
+ "scale":[
+ 2.01033091545105,
+ 2.01033091545105,
+ 2.01033091545105
+ ],
+ "translation":[
+ 1.9437334537506104,
+ 0.04618556424975395,
+ 12.125788688659668
+ ]
+ },
+ {
+ "mesh":27,
+ "name":"PTK_Wall_Large_4",
+ "rotation":[
+ 0,
+ 1,
+ 0,
+ 7.549790126404332e-08
+ ],
+ "scale":[
+ 2.01033091545105,
+ 2.01033091545105,
+ 2.01033091545105
+ ],
+ "translation":[
+ 2.851106882095337,
+ 0.04618556424975395,
+ 11.184982299804688
+ ]
+ },
+ {
+ "mesh":28,
+ "name":"PTK_Wall_Large_5",
+ "rotation":[
+ 0,
+ 1,
+ 0,
+ 7.549790126404332e-08
+ ],
+ "scale":[
+ 2.01033091545105,
+ 2.01033091545105,
+ 2.01033091545105
+ ],
+ "translation":[
+ 3.8004438877105713,
+ 0.04618556424975395,
+ 10.13637638092041
+ ]
+ },
+ {
+ "mesh":29,
+ "name":"PTK_Wall_Medium_1",
+ "rotation":[
+ 0,
+ 1,
+ 0,
+ 7.549790126404332e-08
+ ],
+ "scale":[
+ 2.01033091545105,
+ 2.01033091545105,
+ 2.01033091545105
+ ],
+ "translation":[
+ 6.575769901275635,
+ 0.04618556424975395,
+ 14.125752449035645
+ ]
+ },
+ {
+ "mesh":30,
+ "name":"PTK_Wall_Medium_2",
+ "rotation":[
+ 0,
+ 1,
+ 0,
+ 7.549790126404332e-08
+ ],
+ "scale":[
+ 2.01033091545105,
+ 2.01033091545105,
+ 2.01033091545105
+ ],
+ "translation":[
+ 7.5098557472229,
+ 0.04618556424975395,
+ 13.100341796875
+ ]
+ },
+ {
+ "mesh":31,
+ "name":"PTK_Wall_Medium_3",
+ "rotation":[
+ 0,
+ 1,
+ 0,
+ 7.549790126404332e-08
+ ],
+ "scale":[
+ 2.01033091545105,
+ 2.01033091545105,
+ 2.01033091545105
+ ],
+ "translation":[
+ 8.476037979125977,
+ 0.04618556424975395,
+ 12.152875900268555
+ ]
+ },
+ {
+ "mesh":32,
+ "name":"PTK_Wall_Medium_4",
+ "rotation":[
+ 0,
+ 1,
+ 0,
+ 7.549790126404332e-08
+ ],
+ "scale":[
+ 2.01033091545105,
+ 2.01033091545105,
+ 2.01033091545105
+ ],
+ "translation":[
+ 9.414545059204102,
+ 0.04618556424975395,
+ 11.097189903259277
+ ]
+ },
+ {
+ "mesh":33,
+ "name":"PTK_Wall_Medium_5",
+ "rotation":[
+ 0,
+ 1,
+ 0,
+ 7.549790126404332e-08
+ ],
+ "scale":[
+ 2.01033091545105,
+ 2.01033091545105,
+ 2.01033091545105
+ ],
+ "translation":[
+ 10.371454238891602,
+ 0.04618556424975395,
+ 10.139568328857422
+ ]
+ },
+ {
+ "mesh":34,
+ "name":"PTK_Wall_Small_1",
+ "rotation":[
+ 0,
+ 1,
+ 0,
+ 7.549790126404332e-08
+ ],
+ "scale":[
+ 2.01033091545105,
+ 2.01033091545105,
+ 2.01033091545105
+ ],
+ "translation":[
+ 12.166696548461914,
+ 0.04618556424975395,
+ 14.166089057922363
+ ]
+ },
+ {
+ "mesh":35,
+ "name":"PTK_Wall_Small_2",
+ "rotation":[
+ 0,
+ 1,
+ 0,
+ 7.549790126404332e-08
+ ],
+ "scale":[
+ 2.01033091545105,
+ 2.01033091545105,
+ 2.01033091545105
+ ],
+ "translation":[
+ 13.133539199829102,
+ 0.04618556424975395,
+ 13.11153793334961
+ ]
+ },
+ {
+ "mesh":36,
+ "name":"PTK_Wall_Small_3",
+ "rotation":[
+ 0,
+ 1,
+ 0,
+ 7.549790126404332e-08
+ ],
+ "scale":[
+ 2.01033091545105,
+ 2.01033091545105,
+ 2.01033091545105
+ ],
+ "translation":[
+ 14.110733032226562,
+ 0.04618556424975395,
+ 12.129040718078613
+ ]
+ },
+ {
+ "mesh":37,
+ "name":"PTK_Wall_Small_4",
+ "rotation":[
+ 0,
+ 1,
+ 0,
+ 7.549790126404332e-08
+ ],
+ "scale":[
+ 2.01033091545105,
+ 2.01033091545105,
+ 2.01033091545105
+ ],
+ "translation":[
+ 15.04161262512207,
+ 0.04618556424975395,
+ 11.138568878173828
+ ]
+ },
+ {
+ "mesh":38,
+ "name":"PTK_Wall_Small_5",
+ "rotation":[
+ 0,
+ 1,
+ 0,
+ 7.549790126404332e-08
+ ],
+ "scale":[
+ 2.01033091545105,
+ 2.01033091545105,
+ 2.01033091545105
+ ],
+ "translation":[
+ 15.994539260864258,
+ 0.04618556424975395,
+ 10.141380310058594
+ ]
+ },
+ {
+ "mesh":39,
+ "name":"PTK_ActionField",
+ "rotation":[
+ 0,
+ 1,
+ 0,
+ 7.549790126404332e-08
+ ],
+ "scale":[
+ 2.01033091545105,
+ 2.01033091545105,
+ 2.01033091545105
+ ],
+ "translation":[
+ -7.695528507232666,
+ 0.47036612033843994,
+ 18.305707931518555
+ ]
+ },
+ {
+ "mesh":40,
+ "name":"PTK_Exclamation_red",
+ "rotation":[
+ 0,
+ 1,
+ 0,
+ 7.549790126404332e-08
+ ],
+ "scale":[
+ 2.01033091545105,
+ 2.01033091545105,
+ 2.01033091545105
+ ],
+ "translation":[
+ -3.2526533603668213,
+ 0.04618556424975395,
+ 18.267520904541016
+ ]
+ },
+ {
+ "mesh":41,
+ "name":"PTK_Collectable_1",
+ "rotation":[
+ 0,
+ 1,
+ 0,
+ 7.549790126404332e-08
+ ],
+ "scale":[
+ 2.01033091545105,
+ 2.01033091545105,
+ 2.01033091545105
+ ],
+ "translation":[
+ -1.1217029094696045,
+ 0.2371673732995987,
+ 18.343935012817383
+ ]
+ },
+ {
+ "mesh":42,
+ "name":"PTK_Collectable_2",
+ "rotation":[
+ 0,
+ 1,
+ 0,
+ 7.549790126404332e-08
+ ],
+ "scale":[
+ 2.01033091545105,
+ 2.01033091545105,
+ 2.01033091545105
+ ],
+ "translation":[
+ -0.8000409007072449,
+ 0.2371673732995987,
+ 18.353931427001953
+ ]
+ },
+ {
+ "mesh":43,
+ "name":"Sliding_Door",
+ "translation":[
+ 0,
+ 1.7199997901916504,
+ 0
+ ]
+ },
+ {
+ "children":[
+ 43
+ ],
+ "mesh":44,
+ "name":"PTK_SlidingDoor_Large",
+ "rotation":[
+ 0,
+ 0.7071068286895752,
+ 0,
+ 0.7071068286895752
+ ],
+ "scale":[
+ 2.01033091545105,
+ 2.01033091545105,
+ 2.01033091545105
+ ],
+ "translation":[
+ 9.693876266479492,
+ 0.04618556424975395,
+ -6.702690124511719
+ ]
+ },
+ {
+ "mesh":45,
+ "name":"Sliding_Door_001",
+ "translation":[
+ 0,
+ 0.9214999079704285,
+ -0.18999943137168884
+ ]
+ },
+ {
+ "children":[
+ 45
+ ],
+ "mesh":46,
+ "name":"PTK_SlidingDoor_Medium",
+ "rotation":[
+ 0,
+ 0.7071068286895752,
+ 0,
+ 0.7071068286895752
+ ],
+ "scale":[
+ 2.01033091545105,
+ 2.01033091545105,
+ 2.01033091545105
+ ],
+ "translation":[
+ 15.403181076049805,
+ 0.04618556424975395,
+ -6.702688217163086
+ ]
+ },
+ {
+ "mesh":47,
+ "name":"Door",
+ "rotation":[
+ 0,
+ 0.34795981645584106,
+ 0,
+ 0.9375094771385193
+ ],
+ "translation":[
+ 0,
+ 0,
+ 0.3874427378177643
+ ]
+ },
+ {
+ "children":[
+ 47
+ ],
+ "mesh":48,
+ "name":"PTK_Door_Medium__1_",
+ "rotation":[
+ 0,
+ 0.7071068286895752,
+ 0,
+ 0.7071068286895752
+ ],
+ "scale":[
+ 2.01033091545105,
+ 2.01033091545105,
+ 2.01033091545105
+ ],
+ "translation":[
+ 18.030118942260742,
+ 0.04618556424975395,
+ -6.702688217163086
+ ]
+ },
+ {
+ "mesh":49,
+ "name":"PTK_Ladder_Large",
+ "rotation":[
+ 0,
+ 0.7071068286895752,
+ 0,
+ 0.7071068286895752
+ ],
+ "scale":[
+ 2.01033091545105,
+ 2.01033091545105,
+ 2.01033091545105
+ ],
+ "translation":[
+ -0.8000370860099792,
+ 0.04618556424975395,
+ -18.764806747436523
+ ]
+ },
+ {
+ "mesh":50,
+ "name":"PTK_Ladder_Medium",
+ "rotation":[
+ 0,
+ 0.7071068286895752,
+ 0,
+ 0.7071068286895752
+ ],
+ "scale":[
+ 2.01033091545105,
+ 2.01033091545105,
+ 2.01033091545105
+ ],
+ "translation":[
+ 0.888630211353302,
+ 0.04618556424975395,
+ -18.764806747436523
+ ]
+ },
+ {
+ "mesh":51,
+ "name":"PTK_Ladder_Small",
+ "rotation":[
+ 0,
+ 0.7071068286895752,
+ 0,
+ 0.7071068286895752
+ ],
+ "scale":[
+ 2.01033091545105,
+ 2.01033091545105,
+ 2.01033091545105
+ ],
+ "translation":[
+ 2.476747751235962,
+ 0.04618556424975395,
+ -18.845203399658203
+ ]
+ },
+ {
+ "mesh":52,
+ "name":"PTK_Lamp",
+ "rotation":[
+ 0,
+ 1,
+ 0,
+ 7.549790126404332e-08
+ ],
+ "scale":[
+ 2.01033091545105,
+ 2.01033091545105,
+ 2.01033091545105
+ ],
+ "translation":[
+ 0.9489367604255676,
+ 5.353462219238281,
+ 17.83978271484375
+ ]
+ },
+ {
+ "mesh":53,
+ "name":"PTK_Tunnel_Small",
+ "rotation":[
+ 0,
+ 1,
+ 0,
+ 7.549790126404332e-08
+ ],
+ "scale":[
+ 2.01033091545105,
+ 2.01033091545105,
+ 2.01033091545105
+ ],
+ "translation":[
+ -4.398552417755127,
+ 0.04618556424975395,
+ -19.749847412109375
+ ]
+ },
+ {
+ "mesh":54,
+ "name":"Door_5_001",
+ "translation":[
+ 0,
+ 0,
+ 0.3874417841434479
+ ]
+ },
+ {
+ "children":[
+ 54
+ ],
+ "mesh":55,
+ "name":"PTK_Door_Medium_2",
+ "rotation":[
+ 0,
+ 0.7071068286895752,
+ 0,
+ 0.7071068286895752
+ ],
+ "scale":[
+ 2.01033091545105,
+ 2.01033091545105,
+ 2.01033091545105
+ ],
+ "translation":[
+ 21.715652465820312,
+ 0.06628911197185516,
+ -6.702688217163086
+ ]
+ },
+ {
+ "mesh":56,
+ "name":"Door_5",
+ "rotation":[
+ 0,
+ 0.21325471997261047,
+ 0,
+ 0.976996660232544
+ ],
+ "translation":[
+ 0,
+ 0,
+ 0.774999737739563
+ ]
+ },
+ {
+ "mesh":57,
+ "name":"Door_6",
+ "rotation":[
+ 0,
+ -0.12296297401189804,
+ 0,
+ 0.9924112558364868
+ ],
+ "translation":[
+ 0,
+ 0,
+ -0.7750004529953003
+ ]
+ },
+ {
+ "children":[
+ 56,
+ 57
+ ],
+ "mesh":58,
+ "name":"PTK_DoubleDoor_Medium",
+ "rotation":[
+ 0,
+ 0.7071068286895752,
+ 0,
+ 0.7071068286895752
+ ],
+ "scale":[
+ 2.01033091545105,
+ 2.01033091545105,
+ 2.01033091545105
+ ],
+ "translation":[
+ 26.560565948486328,
+ 0.06628911197185516,
+ -6.702688217163086
+ ]
+ },
+ {
+ "mesh":59,
+ "name":"Door_7"
+ },
+ {
+ "children":[
+ 59
+ ],
+ "mesh":60,
+ "name":"PTK_RevolvingDoor_Medium",
+ "rotation":[
+ 0,
+ 0.7071068286895752,
+ 0,
+ 0.7071068286895752
+ ],
+ "scale":[
+ 2.01033091545105,
+ 2.01033091545105,
+ 2.01033091545105
+ ],
+ "translation":[
+ 31.425548553466797,
+ 0.06628911197185516,
+ -6.702688217163086
+ ]
+ },
+ {
+ "mesh":61,
+ "name":"Door_3",
+ "translation":[
+ 0.9449977874755859,
+ 0.054749321192502975,
+ 0.944075882434845
+ ]
+ },
+ {
+ "mesh":62,
+ "name":"Door_4",
+ "translation":[
+ -0.9449973106384277,
+ 0.054749321192502975,
+ 0.9440764784812927
+ ]
+ },
+ {
+ "children":[
+ 61,
+ 62
+ ],
+ "mesh":63,
+ "name":"PTK_Elevator"
+ },
+ {
+ "children":[
+ 63
+ ],
+ "mesh":64,
+ "name":"PTK_Elevator_2Floors",
+ "scale":[
+ 2.01033091545105,
+ 2.01033091545105,
+ 2.01033091545105
+ ],
+ "translation":[
+ 8.708806991577148,
+ 0.06628911197185516,
+ -20.795230865478516
+ ]
+ },
+ {
+ "mesh":61,
+ "name":"Door_3_1",
+ "translation":[
+ 1.3499994277954102,
+ 0.054749324917793274,
+ 0.9440774321556091
+ ]
+ },
+ {
+ "mesh":62,
+ "name":"Door_4_1",
+ "translation":[
+ -1.4200005531311035,
+ 0.054749324917793274,
+ 0.9440773129463196
+ ]
+ },
+ {
+ "children":[
+ 65,
+ 66
+ ],
+ "mesh":63,
+ "name":"PTK_Elevator__1_"
+ },
+ {
+ "children":[
+ 67
+ ],
+ "mesh":65,
+ "name":"PTK_Elevator_3Floors",
+ "scale":[
+ 2.01033091545105,
+ 2.01033091545105,
+ 2.01033091545105
+ ],
+ "translation":[
+ 16.5692081451416,
+ 0.06628839671611786,
+ -20.79522705078125
+ ]
+ },
+ {
+ "mesh":66,
+ "name":"Lid",
+ "rotation":[
+ 0,
+ 0,
+ -0.3780010938644409,
+ 0.9258051514625549
+ ],
+ "translation":[
+ 0.2499992698431015,
+ 0.49999988079071045,
+ 0
+ ]
+ },
+ {
+ "children":[
+ 69
+ ],
+ "mesh":67,
+ "name":"PTK_Chest",
+ "rotation":[
+ 0,
+ 0.7071068286895752,
+ 0,
+ 0.7071068286895752
+ ],
+ "scale":[
+ 2.01033091545105,
+ 2.01033091545105,
+ 2.01033091545105
+ ],
+ "translation":[
+ -10.18832015991211,
+ 0.11964905261993408,
+ 18.524946212768555
+ ]
+ },
+ {
+ "mesh":68,
+ "name":"PTK_Pool",
+ "rotation":[
+ -0.003346191020682454,
+ 0.7071229815483093,
+ 0.0035125536378473043,
+ 0.7070739269256592
+ ],
+ "scale":[
+ 2.0103304386138916,
+ 2.0103304386138916,
+ 2.010331392288208
+ ],
+ "translation":[
+ -15.252582550048828,
+ 0.03995344787836075,
+ -20.615934371948242
+ ]
+ },
+ {
+ "mesh":69,
+ "name":"PTK_Tunnel_Medium",
+ "rotation":[
+ 0,
+ 1,
+ 0,
+ 7.549790126404332e-08
+ ],
+ "scale":[
+ 2.01033091545105,
+ 2.01033091545105,
+ 2.01033091545105
+ ],
+ "translation":[
+ -7.357728004455566,
+ 0.04618556424975395,
+ -19.749847412109375
+ ]
+ },
+ {
+ "mesh":70,
+ "name":"PTK_Tunnel_Large",
+ "rotation":[
+ 0,
+ 1,
+ 0,
+ 7.549790126404332e-08
+ ],
+ "scale":[
+ 2.01033091545105,
+ 2.01033091545105,
+ 2.01033091545105
+ ],
+ "translation":[
+ -9.967148780822754,
+ 0.04618556424975395,
+ -19.749847412109375
+ ]
+ },
+ {
+ "mesh":71,
+ "name":"PTK_ActionField_3",
+ "rotation":[
+ 0,
+ 1,
+ 0,
+ 7.549790126404332e-08
+ ],
+ "scale":[
+ 2.01033091545105,
+ 2.01033091545105,
+ 2.01033091545105
+ ],
+ "translation":[
+ -5.443906307220459,
+ 0.47036612033843994,
+ 18.30571174621582
+ ]
+ },
+ {
+ "mesh":72,
+ "name":"PTK_ActionField_4",
+ "rotation":[
+ 0,
+ 1,
+ 0,
+ 7.549790126404332e-08
+ ],
+ "scale":[
+ 2.01033091545105,
+ 2.01033091545105,
+ 2.01033091545105
+ ],
+ "translation":[
+ -4.4186787605285645,
+ 0.47036612033843994,
+ 18.30571174621582
+ ]
+ },
+ {
+ "mesh":73,
+ "name":"PTK_Exclamation_blue",
+ "rotation":[
+ 0,
+ 1,
+ 0,
+ 7.549790126404332e-08
+ ],
+ "scale":[
+ 2.01033091545105,
+ 2.01033091545105,
+ 2.01033091545105
+ ],
+ "translation":[
+ -2.549084424972534,
+ 0.04618556424975395,
+ 18.267520904541016
+ ]
+ },
+ {
+ "mesh":74,
+ "name":"PTK_Exclamation_green",
+ "rotation":[
+ 0,
+ 1,
+ 0,
+ 7.549790126404332e-08
+ ],
+ "scale":[
+ 2.01033091545105,
+ 2.01033091545105,
+ 2.01033091545105
+ ],
+ "translation":[
+ -1.8052079677581787,
+ 0.04618556424975395,
+ 18.267520904541016
+ ]
+ },
+ {
+ "mesh":75,
+ "name":"PTK_Collectable_1_blue",
+ "rotation":[
+ 0,
+ 1,
+ 0,
+ 7.549790126404332e-08
+ ],
+ "scale":[
+ 2.01033091545105,
+ 2.01033091545105,
+ 2.01033091545105
+ ],
+ "translation":[
+ -1.1217029094696045,
+ 0.2371673732995987,
+ 17.748830795288086
+ ]
+ },
+ {
+ "mesh":76,
+ "name":"PTK_Collectable_1_green",
+ "rotation":[
+ 0,
+ 1,
+ 0,
+ 7.549790126404332e-08
+ ],
+ "scale":[
+ 2.01033091545105,
+ 2.01033091545105,
+ 2.01033091545105
+ ],
+ "translation":[
+ -1.1217029094696045,
+ 0.2371673732995987,
+ 17.153825759887695
+ ]
+ },
+ {
+ "mesh":77,
+ "name":"PTK_Collectable_2_blue",
+ "rotation":[
+ 0,
+ 1,
+ 0,
+ 7.549790126404332e-08
+ ],
+ "scale":[
+ 2.01033091545105,
+ 2.01033091545105,
+ 2.01033091545105
+ ],
+ "translation":[
+ -0.8000409007072449,
+ 0.2371673732995987,
+ 17.730764389038086
+ ]
+ },
+ {
+ "mesh":78,
+ "name":"PTK_Collectable_2_green",
+ "rotation":[
+ 0,
+ 1,
+ 0,
+ 7.549790126404332e-08
+ ],
+ "scale":[
+ 2.01033091545105,
+ 2.01033091545105,
+ 2.01033091545105
+ ],
+ "translation":[
+ -0.8000409007072449,
+ 0.2371673732995987,
+ 17.13971710205078
]
}
],
@@ -97,35 +1609,145 @@
},
{
"doubleSided":true,
- "name":"Material.001",
+ "name":"Prototyp_Material_10",
"pbrMetallicRoughness":{
"baseColorTexture":{
"index":1
},
"metallicFactor":0,
- "roughnessFactor":0.5
+ "roughnessFactor":0.5527864098548889
}
},
{
"doubleSided":true,
- "name":"Material.002",
+ "name":"Prototyp_Material_1",
"pbrMetallicRoughness":{
"baseColorTexture":{
+ "extensions":{
+ "KHR_texture_transform":{
+ "offset":[
+ 0,
+ -4
+ ],
+ "scale":[
+ 5,
+ 5
+ ]
+ }
+ },
"index":2
},
"metallicFactor":0,
- "roughnessFactor":0.5
+ "roughnessFactor":0.5527864098548889
}
},
{
"doubleSided":true,
- "name":"Material.003",
+ "name":"Prototyp_Material_9",
"pbrMetallicRoughness":{
"baseColorTexture":{
"index":3
},
"metallicFactor":0,
- "roughnessFactor":0.5
+ "roughnessFactor":0.5527864098548889
+ }
+ },
+ {
+ "doubleSided":true,
+ "name":"Prototyp_Material_13",
+ "pbrMetallicRoughness":{
+ "baseColorFactor":[
+ 1,
+ 0,
+ 0,
+ 1
+ ],
+ "metallicFactor":0,
+ "roughnessFactor":0.5527864098548889
+ }
+ },
+ {
+ "doubleSided":true,
+ "name":"Prototyp_Material_8",
+ "pbrMetallicRoughness":{
+ "baseColorTexture":{
+ "index":4
+ },
+ "metallicFactor":0,
+ "roughnessFactor":0.5527864098548889
+ }
+ },
+ {
+ "doubleSided":true,
+ "name":"Prototyp_Material_2",
+ "pbrMetallicRoughness":{
+ "baseColorTexture":{
+ "extensions":{
+ "KHR_texture_transform":{
+ "offset":[
+ 0,
+ -4
+ ],
+ "scale":[
+ 5,
+ 5
+ ]
+ }
+ },
+ "index":5
+ },
+ "metallicFactor":0,
+ "roughnessFactor":0.5527864098548889
+ }
+ },
+ {
+ "doubleSided":true,
+ "name":"Prototyp_Material_11",
+ "pbrMetallicRoughness":{
+ "baseColorTexture":{
+ "index":6
+ },
+ "metallicFactor":0,
+ "roughnessFactor":0.5527864098548889
+ }
+ },
+ {
+ "doubleSided":true,
+ "name":"Prototyp_Material_12",
+ "pbrMetallicRoughness":{
+ "baseColorTexture":{
+ "index":7
+ },
+ "metallicFactor":0,
+ "roughnessFactor":0.5527864098548889
+ }
+ },
+ {
+ "doubleSided":true,
+ "name":"Prototyp_Material_14",
+ "pbrMetallicRoughness":{
+ "baseColorFactor":[
+ 0,
+ 0.5448276996612549,
+ 1,
+ 1
+ ],
+ "metallicFactor":0,
+ "roughnessFactor":0.5527864098548889
+ }
+ },
+ {
+ "doubleSided":true,
+ "name":"Prototyp_Material_15",
+ "pbrMetallicRoughness":{
+ "baseColorFactor":[
+ 0.36551713943481445,
+ 1,
+ 0,
+ 1
+ ],
+ "metallicFactor":0,
+ "roughnessFactor":0.5527864098548889
}
}
],
@@ -145,7 +1767,7 @@
]
},
{
- "name":"Cube.001",
+ "name":"Scene",
"primitives":[
{
"attributes":{
@@ -155,7 +1777,12 @@
},
"indices":7,
"material":1
- },
+ }
+ ]
+ },
+ {
+ "name":"Scene.001",
+ "primitives":[
{
"attributes":{
"POSITION":8,
@@ -164,52 +1791,67 @@
},
"indices":11,
"material":2
- },
+ }
+ ]
+ },
+ {
+ "name":"Scene.002",
+ "primitives":[
{
"attributes":{
"POSITION":12,
"NORMAL":13,
"TEXCOORD_0":14
},
- "indices":15,
- "material":3
+ "indices":11,
+ "material":2
}
]
},
{
- "name":"Cube.003",
+ "name":"Scene.003",
"primitives":[
{
"attributes":{
- "POSITION":16,
- "NORMAL":17,
- "TEXCOORD_0":18
- },
- "indices":7,
- "material":1
- },
- {
- "attributes":{
- "POSITION":19,
- "NORMAL":20,
- "TEXCOORD_0":21
+ "POSITION":15,
+ "NORMAL":16,
+ "TEXCOORD_0":17
},
"indices":11,
"material":2
- },
+ }
+ ]
+ },
+ {
+ "name":"Scene.004",
+ "primitives":[
+ {
+ "attributes":{
+ "POSITION":18,
+ "NORMAL":19,
+ "TEXCOORD_0":20
+ },
+ "indices":21,
+ "material":2
+ }
+ ]
+ },
+ {
+ "name":"Scene.005",
+ "primitives":[
{
"attributes":{
"POSITION":22,
"NORMAL":23,
"TEXCOORD_0":24
},
- "indices":15,
- "material":3
+ "indices":21,
+ "material":2
}
]
},
{
- "name":"Cube.004",
+ "name":"Scene.006",
"primitives":[
{
"attributes":{
@@ -217,122 +1859,1002 @@
"NORMAL":26,
"TEXCOORD_0":27
},
- "indices":7,
- "material":1
- },
+ "indices":21,
+ "material":2
+ }
+ ]
+ },
+ {
+ "name":"Scene.007",
+ "primitives":[
{
"attributes":{
"POSITION":28,
"NORMAL":29,
"TEXCOORD_0":30
},
- "indices":11,
+ "indices":31,
"material":2
- },
+ }
+ ]
+ },
+ {
+ "name":"Scene.008",
+ "primitives":[
{
"attributes":{
- "POSITION":31,
- "NORMAL":32,
- "TEXCOORD_0":33
+ "POSITION":32,
+ "NORMAL":33,
+ "TEXCOORD_0":34
},
- "indices":15,
+ "indices":31,
+ "material":2
+ }
+ ]
+ },
+ {
+ "name":"Scene.009",
+ "primitives":[
+ {
+ "attributes":{
+ "POSITION":35,
+ "NORMAL":36,
+ "TEXCOORD_0":37
+ },
+ "indices":31,
+ "material":2
+ }
+ ]
+ },
+ {
+ "name":"Scene.010",
+ "primitives":[
+ {
+ "attributes":{
+ "POSITION":38,
+ "NORMAL":39,
+ "TEXCOORD_0":40
+ },
+ "indices":41,
+ "material":2
+ }
+ ]
+ },
+ {
+ "name":"Scene.011",
+ "primitives":[
+ {
+ "attributes":{
+ "POSITION":42,
+ "NORMAL":43,
+ "TEXCOORD_0":44
+ },
+ "indices":41,
+ "material":2
+ }
+ ]
+ },
+ {
+ "name":"Scene.012",
+ "primitives":[
+ {
+ "attributes":{
+ "POSITION":45,
+ "NORMAL":46,
+ "TEXCOORD_0":47
+ },
+ "indices":41,
+ "material":2
+ }
+ ]
+ },
+ {
+ "name":"Scene.013",
+ "primitives":[
+ {
+ "attributes":{
+ "POSITION":48,
+ "NORMAL":49,
+ "TEXCOORD_0":50
+ },
+ "indices":41,
+ "material":2
+ }
+ ]
+ },
+ {
+ "name":"Scene.014",
+ "primitives":[
+ {
+ "attributes":{
+ "POSITION":51,
+ "NORMAL":52,
+ "TEXCOORD_0":53
+ },
+ "indices":41,
+ "material":2
+ }
+ ]
+ },
+ {
+ "name":"Scene.015",
+ "primitives":[
+ {
+ "attributes":{
+ "POSITION":54,
+ "NORMAL":55,
+ "TEXCOORD_0":56
+ },
+ "indices":41,
+ "material":2
+ }
+ ]
+ },
+ {
+ "name":"Scene.016",
+ "primitives":[
+ {
+ "attributes":{
+ "POSITION":57,
+ "NORMAL":58,
+ "TEXCOORD_0":59
+ },
+ "indices":41,
+ "material":2
+ }
+ ]
+ },
+ {
+ "name":"Scene.017",
+ "primitives":[
+ {
+ "attributes":{
+ "POSITION":60,
+ "NORMAL":61,
+ "TEXCOORD_0":62
+ },
+ "indices":63,
+ "material":2
+ }
+ ]
+ },
+ {
+ "name":"Scene.018",
+ "primitives":[
+ {
+ "attributes":{
+ "POSITION":64,
+ "NORMAL":65,
+ "TEXCOORD_0":66
+ },
+ "indices":67,
+ "material":2
+ }
+ ]
+ },
+ {
+ "name":"Scene.019",
+ "primitives":[
+ {
+ "attributes":{
+ "POSITION":68,
+ "NORMAL":69,
+ "TEXCOORD_0":70
+ },
+ "indices":71,
+ "material":2
+ }
+ ]
+ },
+ {
+ "name":"Scene.020",
+ "primitives":[
+ {
+ "attributes":{
+ "POSITION":72,
+ "NORMAL":73,
+ "TEXCOORD_0":74
+ },
+ "indices":75,
+ "material":2
+ }
+ ]
+ },
+ {
+ "name":"Scene.021",
+ "primitives":[
+ {
+ "attributes":{
+ "POSITION":76,
+ "NORMAL":77,
+ "TEXCOORD_0":78
+ },
+ "indices":79,
+ "material":2
+ }
+ ]
+ },
+ {
+ "name":"Scene.022",
+ "primitives":[
+ {
+ "attributes":{
+ "POSITION":80,
+ "NORMAL":81,
+ "TEXCOORD_0":82
+ },
+ "indices":83,
+ "material":2
+ }
+ ]
+ },
+ {
+ "name":"Scene.023",
+ "primitives":[
+ {
+ "attributes":{
+ "POSITION":84,
+ "NORMAL":85,
+ "TEXCOORD_0":86
+ },
+ "indices":41,
+ "material":2
+ }
+ ]
+ },
+ {
+ "name":"Scene.024",
+ "primitives":[
+ {
+ "attributes":{
+ "POSITION":87,
+ "NORMAL":88,
+ "TEXCOORD_0":89
+ },
+ "indices":41,
+ "material":2
+ }
+ ]
+ },
+ {
+ "name":"Scene.025",
+ "primitives":[
+ {
+ "attributes":{
+ "POSITION":90,
+ "NORMAL":91,
+ "TEXCOORD_0":92
+ },
+ "indices":41,
+ "material":2
+ }
+ ]
+ },
+ {
+ "name":"Scene.026",
+ "primitives":[
+ {
+ "attributes":{
+ "POSITION":93,
+ "NORMAL":94,
+ "TEXCOORD_0":95
+ },
+ "indices":41,
+ "material":2
+ }
+ ]
+ },
+ {
+ "name":"Scene.027",
+ "primitives":[
+ {
+ "attributes":{
+ "POSITION":96,
+ "NORMAL":97,
+ "TEXCOORD_0":98
+ },
+ "indices":41,
+ "material":2
+ }
+ ]
+ },
+ {
+ "name":"Scene.028",
+ "primitives":[
+ {
+ "attributes":{
+ "POSITION":99,
+ "NORMAL":100,
+ "TEXCOORD_0":101
+ },
+ "indices":41,
+ "material":2
+ }
+ ]
+ },
+ {
+ "name":"Scene.029",
+ "primitives":[
+ {
+ "attributes":{
+ "POSITION":102,
+ "NORMAL":103,
+ "TEXCOORD_0":104
+ },
+ "indices":41,
+ "material":2
+ }
+ ]
+ },
+ {
+ "name":"Scene.030",
+ "primitives":[
+ {
+ "attributes":{
+ "POSITION":105,
+ "NORMAL":106,
+ "TEXCOORD_0":107
+ },
+ "indices":41,
+ "material":2
+ }
+ ]
+ },
+ {
+ "name":"Scene.031",
+ "primitives":[
+ {
+ "attributes":{
+ "POSITION":108,
+ "NORMAL":109,
+ "TEXCOORD_0":110
+ },
+ "indices":41,
+ "material":2
+ }
+ ]
+ },
+ {
+ "name":"Scene.032",
+ "primitives":[
+ {
+ "attributes":{
+ "POSITION":111,
+ "NORMAL":112,
+ "TEXCOORD_0":113
+ },
+ "indices":41,
+ "material":2
+ }
+ ]
+ },
+ {
+ "name":"Scene.033",
+ "primitives":[
+ {
+ "attributes":{
+ "POSITION":114,
+ "NORMAL":115,
+ "TEXCOORD_0":116
+ },
+ "indices":41,
+ "material":2
+ }
+ ]
+ },
+ {
+ "name":"Scene.034",
+ "primitives":[
+ {
+ "attributes":{
+ "POSITION":117,
+ "NORMAL":118,
+ "TEXCOORD_0":119
+ },
+ "indices":41,
+ "material":2
+ }
+ ]
+ },
+ {
+ "name":"Scene.035",
+ "primitives":[
+ {
+ "attributes":{
+ "POSITION":120,
+ "NORMAL":121,
+ "TEXCOORD_0":122
+ },
+ "indices":41,
+ "material":2
+ }
+ ]
+ },
+ {
+ "name":"Scene.036",
+ "primitives":[
+ {
+ "attributes":{
+ "POSITION":123,
+ "NORMAL":124,
+ "TEXCOORD_0":125
+ },
+ "indices":41,
+ "material":2
+ }
+ ]
+ },
+ {
+ "name":"Scene.037",
+ "primitives":[
+ {
+ "attributes":{
+ "POSITION":126,
+ "NORMAL":127,
+ "TEXCOORD_0":128
+ },
+ "indices":41,
+ "material":2
+ }
+ ]
+ },
+ {
+ "name":"Scene",
+ "primitives":[
+ {
+ "attributes":{
+ "POSITION":4,
+ "NORMAL":5,
+ "TEXCOORD_0":6
+ },
+ "indices":7,
"material":3
}
]
},
{
- "name":"Cube.005",
+ "name":"Scene.038",
"primitives":[
{
"attributes":{
- "POSITION":34,
- "NORMAL":35,
- "TEXCOORD_0":36
+ "POSITION":129,
+ "NORMAL":130,
+ "TEXCOORD_0":131
},
- "indices":7,
- "material":1
- },
- {
- "attributes":{
- "POSITION":37,
- "NORMAL":38,
- "TEXCOORD_0":39
- },
- "indices":11,
- "material":2
- },
- {
- "attributes":{
- "POSITION":40,
- "NORMAL":41,
- "TEXCOORD_0":42
- },
- "indices":15,
- "material":3
+ "indices":132,
+ "material":4
}
]
},
{
- "name":"Cube.006",
+ "name":"Scene.039",
"primitives":[
{
"attributes":{
- "POSITION":43,
- "NORMAL":44,
- "TEXCOORD_0":45
+ "POSITION":133,
+ "NORMAL":134,
+ "TEXCOORD_0":135
},
- "indices":7,
- "material":1
- },
- {
- "attributes":{
- "POSITION":46,
- "NORMAL":47,
- "TEXCOORD_0":48
- },
- "indices":11,
- "material":2
- },
- {
- "attributes":{
- "POSITION":49,
- "NORMAL":50,
- "TEXCOORD_0":51
- },
- "indices":15,
- "material":3
+ "indices":136,
+ "material":4
}
]
},
{
- "name":"Cube.007",
+ "name":"Scene.040",
"primitives":[
{
"attributes":{
- "POSITION":52,
- "NORMAL":53,
- "TEXCOORD_0":54
+ "POSITION":137,
+ "NORMAL":138,
+ "TEXCOORD_0":139
+ },
+ "indices":140,
+ "material":4
+ }
+ ]
+ },
+ {
+ "name":"Scene.042",
+ "primitives":[
+ {
+ "attributes":{
+ "POSITION":141,
+ "NORMAL":142,
+ "TEXCOORD_0":143
+ },
+ "indices":144,
+ "material":5
+ }
+ ]
+ },
+ {
+ "name":"Scene.041",
+ "primitives":[
+ {
+ "attributes":{
+ "POSITION":145,
+ "NORMAL":146,
+ "TEXCOORD_0":147
+ },
+ "indices":148,
+ "material":2
+ }
+ ]
+ },
+ {
+ "name":"Scene.044",
+ "primitives":[
+ {
+ "attributes":{
+ "POSITION":149,
+ "NORMAL":150,
+ "TEXCOORD_0":151
+ },
+ "indices":152,
+ "material":5
+ }
+ ]
+ },
+ {
+ "name":"Scene.043",
+ "primitives":[
+ {
+ "attributes":{
+ "POSITION":153,
+ "NORMAL":154,
+ "TEXCOORD_0":155
+ },
+ "indices":156,
+ "material":2
+ }
+ ]
+ },
+ {
+ "name":"Scene.046",
+ "primitives":[
+ {
+ "attributes":{
+ "POSITION":157,
+ "NORMAL":158,
+ "TEXCOORD_0":159
+ },
+ "indices":152,
+ "material":5
+ }
+ ]
+ },
+ {
+ "name":"Scene.045",
+ "primitives":[
+ {
+ "attributes":{
+ "POSITION":160,
+ "NORMAL":161,
+ "TEXCOORD_0":162
+ },
+ "indices":156,
+ "material":2
+ }
+ ]
+ },
+ {
+ "name":"Scene.047",
+ "primitives":[
+ {
+ "attributes":{
+ "POSITION":163,
+ "NORMAL":164,
+ "TEXCOORD_0":165
+ },
+ "indices":166,
+ "material":2
+ }
+ ]
+ },
+ {
+ "name":"Scene.048",
+ "primitives":[
+ {
+ "attributes":{
+ "POSITION":167,
+ "NORMAL":168,
+ "TEXCOORD_0":169
+ },
+ "indices":170,
+ "material":2
+ }
+ ]
+ },
+ {
+ "name":"Scene.049",
+ "primitives":[
+ {
+ "attributes":{
+ "POSITION":171,
+ "NORMAL":172,
+ "TEXCOORD_0":173
+ },
+ "indices":174,
+ "material":2
+ }
+ ]
+ },
+ {
+ "name":"Scene.050",
+ "primitives":[
+ {
+ "attributes":{
+ "POSITION":175,
+ "NORMAL":176,
+ "TEXCOORD_0":177
+ },
+ "indices":178,
+ "material":2
+ }
+ ]
+ },
+ {
+ "name":"Scene.051",
+ "primitives":[
+ {
+ "attributes":{
+ "POSITION":179,
+ "NORMAL":180,
+ "TEXCOORD_0":181
+ },
+ "indices":182,
+ "material":2
+ }
+ ]
+ },
+ {
+ "name":"Scene.053",
+ "primitives":[
+ {
+ "attributes":{
+ "POSITION":183,
+ "NORMAL":184,
+ "TEXCOORD_0":185
+ },
+ "indices":152,
+ "material":5
+ }
+ ]
+ },
+ {
+ "name":"Scene.052",
+ "primitives":[
+ {
+ "attributes":{
+ "POSITION":186,
+ "NORMAL":187,
+ "TEXCOORD_0":188
+ },
+ "indices":189,
+ "material":2
+ }
+ ]
+ },
+ {
+ "name":"Scene.055",
+ "primitives":[
+ {
+ "attributes":{
+ "POSITION":190,
+ "NORMAL":191,
+ "TEXCOORD_0":192
+ },
+ "indices":152,
+ "material":5
+ }
+ ]
+ },
+ {
+ "name":"Scene.056",
+ "primitives":[
+ {
+ "attributes":{
+ "POSITION":193,
+ "NORMAL":194,
+ "TEXCOORD_0":195
+ },
+ "indices":196,
+ "material":5
+ }
+ ]
+ },
+ {
+ "name":"Scene.054",
+ "primitives":[
+ {
+ "attributes":{
+ "POSITION":197,
+ "NORMAL":198,
+ "TEXCOORD_0":199
+ },
+ "indices":189,
+ "material":2
+ }
+ ]
+ },
+ {
+ "name":"Scene.058",
+ "primitives":[
+ {
+ "attributes":{
+ "POSITION":200,
+ "NORMAL":201,
+ "TEXCOORD_0":202
+ },
+ "indices":203,
+ "material":5
+ }
+ ]
+ },
+ {
+ "name":"Scene.057",
+ "primitives":[
+ {
+ "attributes":{
+ "POSITION":204,
+ "NORMAL":205,
+ "TEXCOORD_0":206
+ },
+ "indices":189,
+ "material":2
+ }
+ ]
+ },
+ {
+ "name":"Scene.061",
+ "primitives":[
+ {
+ "attributes":{
+ "POSITION":207,
+ "NORMAL":208,
+ "TEXCOORD_0":209
+ },
+ "indices":210,
+ "material":5
+ }
+ ]
+ },
+ {
+ "name":"Scene.062",
+ "primitives":[
+ {
+ "attributes":{
+ "POSITION":211,
+ "NORMAL":212,
+ "TEXCOORD_0":213
+ },
+ "indices":214,
+ "material":5
+ }
+ ]
+ },
+ {
+ "name":"Scene.060",
+ "primitives":[
+ {
+ "attributes":{
+ "POSITION":215,
+ "NORMAL":216,
+ "TEXCOORD_0":217
+ },
+ "indices":218,
+ "material":2
+ }
+ ]
+ },
+ {
+ "name":"Scene.059",
+ "primitives":[
+ {
+ "attributes":{
+ "POSITION":219,
+ "NORMAL":220,
+ "TEXCOORD_0":221
+ },
+ "indices":222,
+ "material":6
+ }
+ ]
+ },
+ {
+ "name":"Scene.063",
+ "primitives":[
+ {
+ "attributes":{
+ "POSITION":223,
+ "NORMAL":224,
+ "TEXCOORD_0":225
+ },
+ "indices":226,
+ "material":6
+ }
+ ]
+ },
+ {
+ "name":"Scene.065",
+ "primitives":[
+ {
+ "attributes":{
+ "POSITION":227,
+ "NORMAL":228,
+ "TEXCOORD_0":229
+ },
+ "indices":230,
+ "material":5
+ }
+ ]
+ },
+ {
+ "name":"Scene.064",
+ "primitives":[
+ {
+ "attributes":{
+ "POSITION":231,
+ "NORMAL":232,
+ "TEXCOORD_0":233
+ },
+ "indices":234,
+ "material":2
+ }
+ ]
+ },
+ {
+ "name":"Scene.066",
+ "primitives":[
+ {
+ "attributes":{
+ "POSITION":235,
+ "NORMAL":236,
+ "TEXCOORD_0":237
+ },
+ "indices":238,
+ "material":2
+ }
+ ]
+ },
+ {
+ "name":"Scene.067",
+ "primitives":[
+ {
+ "attributes":{
+ "POSITION":239,
+ "NORMAL":240,
+ "TEXCOORD_0":241
+ },
+ "indices":242,
+ "material":2
+ }
+ ]
+ },
+ {
+ "name":"Scene.068",
+ "primitives":[
+ {
+ "attributes":{
+ "POSITION":243,
+ "NORMAL":244,
+ "TEXCOORD_0":245
+ },
+ "indices":246,
+ "material":2
+ }
+ ]
+ },
+ {
+ "name":"Scene",
+ "primitives":[
+ {
+ "attributes":{
+ "POSITION":4,
+ "NORMAL":5,
+ "TEXCOORD_0":6
},
"indices":7,
- "material":1
- },
+ "material":7
+ }
+ ]
+ },
+ {
+ "name":"Scene",
+ "primitives":[
{
"attributes":{
- "POSITION":55,
- "NORMAL":56,
- "TEXCOORD_0":57
+ "POSITION":4,
+ "NORMAL":5,
+ "TEXCOORD_0":6
},
- "indices":11,
- "material":2
- },
+ "indices":7,
+ "material":8
+ }
+ ]
+ },
+ {
+ "name":"Scene.038",
+ "primitives":[
{
"attributes":{
- "POSITION":58,
- "NORMAL":59,
- "TEXCOORD_0":60
+ "POSITION":129,
+ "NORMAL":130,
+ "TEXCOORD_0":131
},
- "indices":15,
- "material":3
+ "indices":132,
+ "material":9
+ }
+ ]
+ },
+ {
+ "name":"Scene.038",
+ "primitives":[
+ {
+ "attributes":{
+ "POSITION":129,
+ "NORMAL":130,
+ "TEXCOORD_0":131
+ },
+ "indices":132,
+ "material":10
+ }
+ ]
+ },
+ {
+ "name":"Scene.039",
+ "primitives":[
+ {
+ "attributes":{
+ "POSITION":133,
+ "NORMAL":134,
+ "TEXCOORD_0":135
+ },
+ "indices":136,
+ "material":9
+ }
+ ]
+ },
+ {
+ "name":"Scene.039",
+ "primitives":[
+ {
+ "attributes":{
+ "POSITION":133,
+ "NORMAL":134,
+ "TEXCOORD_0":135
+ },
+ "indices":136,
+ "material":10
+ }
+ ]
+ },
+ {
+ "name":"Scene.040",
+ "primitives":[
+ {
+ "attributes":{
+ "POSITION":137,
+ "NORMAL":138,
+ "TEXCOORD_0":139
+ },
+ "indices":140,
+ "material":9
+ }
+ ]
+ },
+ {
+ "name":"Scene.040",
+ "primitives":[
+ {
+ "attributes":{
+ "POSITION":137,
+ "NORMAL":138,
+ "TEXCOORD_0":139
+ },
+ "indices":140,
+ "material":10
}
]
}
@@ -353,28 +2875,64 @@
{
"sampler":0,
"source":3
+ },
+ {
+ "sampler":0,
+ "source":4
+ },
+ {
+ "sampler":0,
+ "source":5
+ },
+ {
+ "sampler":0,
+ "source":6
+ },
+ {
+ "sampler":0,
+ "source":7
}
],
"images":[
{
"mimeType":"image/png",
"name":"texture_02.png",
- "uri":"../../../3D%20Objects/kenney_prototype-textures/PNG/Orange/texture_02.png"
+ "uri":"../raw-assets/kenney_prototype-textures/PNG/Orange/texture_02.png"
},
{
"mimeType":"image/png",
- "name":"texture_11.png",
- "uri":"../../../3D%20Objects/kenney_prototype-textures/PNG/Orange/texture_11.png"
+ "name":"proto_interaction2.png",
+ "uri":"../raw-assets/DigitalKonstrukt-Prototyping_Pack_Free/Textures/proto_interaction2.png"
},
{
"mimeType":"image/png",
- "name":"texture_01.png",
- "uri":"../../../3D%20Objects/kenney_prototype-textures/PNG/Orange/texture_01.png"
+ "name":"proto_1.png",
+ "uri":"../raw-assets/DigitalKonstrukt-Prototyping_Pack_Free/Textures/proto_1.png"
},
{
"mimeType":"image/png",
- "name":"texture_05.png",
- "uri":"../../../3D%20Objects/kenney_prototype-textures/PNG/Orange/texture_05.png"
+ "name":"proto_interaction.png",
+ "uri":"../raw-assets/DigitalKonstrukt-Prototyping_Pack_Free/Textures/proto_interaction.png"
+ },
+ {
+ "mimeType":"image/png",
+ "name":"Proto_grid.png",
+ "uri":"../raw-assets/DigitalKonstrukt-Prototyping_Pack_Free/Textures/Proto_grid.png"
+ },
+ {
+ "mimeType":"image/png",
+ "name":"proto_2.png",
+ "uri":"../raw-assets/DigitalKonstrukt-Prototyping_Pack_Free/Textures/proto_2.png"
+ },
+ {
+ "mimeType":"image/png",
+ "name":"proto_interaction3.png",
+ "uri":"../raw-assets/DigitalKonstrukt-Prototyping_Pack_Free/Textures/proto_interaction3.png"
+ },
+ {
+ "mimeType":"image/png",
+ "name":"proto_interaction4.png",
+ "uri":"../raw-assets/DigitalKonstrukt-Prototyping_Pack_Free/Textures/proto_interaction4.png"
}
],
"accessors":[
@@ -415,524 +2973,2150 @@
{
"bufferView":4,
"componentType":5126,
- "count":10,
+ "count":24,
"max":[
- 1,
- 1,
- 1
+ 0.19999997317790985,
+ 0.19999997317790985,
+ 0.19999997317790985
],
"min":[
- -1,
- -1,
- -1
+ -0.19999997317790985,
+ -0.19999997317790985,
+ -0.19999997317790985
],
"type":"VEC3"
},
{
"bufferView":5,
"componentType":5126,
- "count":10,
+ "count":24,
"type":"VEC3"
},
{
"bufferView":6,
"componentType":5126,
- "count":10,
+ "count":24,
"type":"VEC2"
},
{
"bufferView":7,
"componentType":5123,
- "count":12,
+ "count":36,
"type":"SCALAR"
},
{
"bufferView":8,
"componentType":5126,
- "count":4,
+ "count":64,
"max":[
- 1,
- 1,
- -1
+ 0.5999999642372131,
+ 0.5,
+ 0.9999997615814209
],
"min":[
- -1,
- -1,
- -1
+ -0.5999999642372131,
+ -0.10000003129243851,
+ -0.9999997615814209
],
"type":"VEC3"
},
{
"bufferView":9,
"componentType":5126,
- "count":4,
+ "count":64,
"type":"VEC3"
},
{
"bufferView":10,
"componentType":5126,
- "count":4,
+ "count":64,
"type":"VEC2"
},
{
"bufferView":11,
"componentType":5123,
- "count":6,
+ "count":132,
"type":"SCALAR"
},
{
"bufferView":12,
"componentType":5126,
- "count":4,
+ "count":64,
"max":[
- 1,
- 1,
- 1
+ 0.3999999463558197,
+ 0.30000001192092896,
+ 0.7499998807907104
],
"min":[
- -1,
- -1,
- -1
+ -0.3999999463558197,
+ -0.10000000149011612,
+ -0.7499998807907104
],
"type":"VEC3"
},
{
"bufferView":13,
"componentType":5126,
- "count":4,
+ "count":64,
"type":"VEC3"
},
{
"bufferView":14,
"componentType":5126,
- "count":4,
+ "count":64,
"type":"VEC2"
},
{
"bufferView":15,
- "componentType":5123,
- "count":6,
- "type":"SCALAR"
+ "componentType":5126,
+ "count":64,
+ "max":[
+ 0.2499999701976776,
+ 0.10000000149011612,
+ 0.49999988079071045
+ ],
+ "min":[
+ -0.24999994039535522,
+ -0.10000000149011612,
+ -0.4999998211860657
+ ],
+ "type":"VEC3"
},
{
"bufferView":16,
"componentType":5126,
- "count":10,
- "max":[
- 1,
- 0.6124721765518188,
- 1
- ],
- "min":[
- -1,
- -1,
- -1
- ],
+ "count":64,
"type":"VEC3"
},
{
"bufferView":17,
"componentType":5126,
- "count":10,
- "type":"VEC3"
+ "count":64,
+ "type":"VEC2"
},
{
"bufferView":18,
"componentType":5126,
- "count":10,
- "type":"VEC2"
+ "count":36,
+ "max":[
+ 1.1920927533992653e-07,
+ 2.999999523162842,
+ 0.4999999403953552
+ ],
+ "min":[
+ -0.4999999403953552,
+ -2.6062650568621146e-16,
+ -1.370965776459343e-07
+ ],
+ "type":"VEC3"
},
{
"bufferView":19,
"componentType":5126,
- "count":4,
- "max":[
- 1,
- 0.6124721765518188,
- -1
- ],
- "min":[
- -1,
- -1,
- -1
- ],
+ "count":36,
"type":"VEC3"
},
{
"bufferView":20,
"componentType":5126,
- "count":4,
- "type":"VEC3"
+ "count":36,
+ "type":"VEC2"
},
{
"bufferView":21,
- "componentType":5126,
- "count":4,
- "type":"VEC2"
+ "componentType":5123,
+ "count":60,
+ "type":"SCALAR"
},
{
"bufferView":22,
"componentType":5126,
- "count":4,
+ "count":36,
"max":[
- 1,
- 0.6124721765518188,
- 1
+ 1.1920927533992653e-07,
+ 1.999999761581421,
+ 0.4999999403953552
],
"min":[
- -1,
- -1,
- -1
+ -0.4999999403953552,
+ -2.6062650568621146e-16,
+ -9.338520357005109e-08
],
"type":"VEC3"
},
{
"bufferView":23,
"componentType":5126,
- "count":4,
+ "count":36,
"type":"VEC3"
},
{
"bufferView":24,
"componentType":5126,
- "count":4,
+ "count":36,
"type":"VEC2"
},
{
"bufferView":25,
"componentType":5126,
- "count":10,
+ "count":36,
"max":[
- 1,
- 0.22941121459007263,
- 1
+ 1.1920927533992653e-07,
+ 0.9999998807907104,
+ 0.4999999403953552
],
"min":[
- -1,
- -1,
- -1
+ -0.4999999403953552,
+ -2.6062650568621146e-16,
+ -4.967382238874052e-08
],
"type":"VEC3"
},
{
"bufferView":26,
"componentType":5126,
- "count":10,
+ "count":36,
"type":"VEC3"
},
{
"bufferView":27,
"componentType":5126,
- "count":10,
+ "count":36,
"type":"VEC2"
},
{
"bufferView":28,
"componentType":5126,
- "count":4,
+ "count":98,
"max":[
- 1,
- 0.22941121459007263,
- -1
+ 0.49999988079071045,
+ 2.999999523162842,
+ 0.4999999403953552
],
"min":[
- -1,
- -1,
- -1
+ -0.5,
+ -2.1855692367012125e-08,
+ -0.5000000596046448
],
"type":"VEC3"
},
{
"bufferView":29,
"componentType":5126,
- "count":4,
+ "count":98,
"type":"VEC3"
},
{
"bufferView":30,
"componentType":5126,
- "count":4,
+ "count":98,
"type":"VEC2"
},
{
"bufferView":31,
- "componentType":5126,
- "count":4,
- "max":[
- 1,
- 0.22941121459007263,
- 1
- ],
- "min":[
- -1,
- -1,
- -1
- ],
- "type":"VEC3"
+ "componentType":5123,
+ "count":192,
+ "type":"SCALAR"
},
{
"bufferView":32,
"componentType":5126,
- "count":4,
+ "count":98,
+ "max":[
+ 0.4999999403953552,
+ 1.999999761581421,
+ 0.4999999403953552
+ ],
+ "min":[
+ -0.4999999403953552,
+ -2.1855692367012125e-08,
+ -0.5
+ ],
"type":"VEC3"
},
{
"bufferView":33,
"componentType":5126,
- "count":4,
- "type":"VEC2"
+ "count":98,
+ "type":"VEC3"
},
{
"bufferView":34,
"componentType":5126,
- "count":10,
- "max":[
- 1,
- -0.12506195902824402,
- 1
- ],
- "min":[
- -1,
- -1,
- -1
- ],
- "type":"VEC3"
+ "count":98,
+ "type":"VEC2"
},
{
"bufferView":35,
"componentType":5126,
- "count":10,
+ "count":98,
+ "max":[
+ 0.4999999403953552,
+ 0.9999998807907104,
+ 0.4999999403953552
+ ],
+ "min":[
+ -0.4999999403953552,
+ -2.1855692367012125e-08,
+ -0.5
+ ],
"type":"VEC3"
},
{
"bufferView":36,
"componentType":5126,
- "count":10,
- "type":"VEC2"
+ "count":98,
+ "type":"VEC3"
},
{
"bufferView":37,
"componentType":5126,
- "count":4,
- "max":[
- 1,
- -0.12506195902824402,
- -1
- ],
- "min":[
- -1,
- -1,
- -1
- ],
- "type":"VEC3"
+ "count":98,
+ "type":"VEC2"
},
{
"bufferView":38,
"componentType":5126,
- "count":4,
+ "count":24,
+ "max":[
+ 0.4999999403953552,
+ 0.9999998807907104,
+ 0.4999999403953552
+ ],
+ "min":[
+ -0.4999999403953552,
+ -2.1855692367012125e-08,
+ -0.5
+ ],
"type":"VEC3"
},
{
"bufferView":39,
"componentType":5126,
- "count":4,
- "type":"VEC2"
+ "count":24,
+ "type":"VEC3"
},
{
"bufferView":40,
"componentType":5126,
- "count":4,
- "max":[
- 1,
- -0.12506195902824402,
- 1
- ],
- "min":[
- -1,
- -1,
- -1
- ],
- "type":"VEC3"
+ "count":24,
+ "type":"VEC2"
},
{
"bufferView":41,
- "componentType":5126,
- "count":4,
- "type":"VEC3"
+ "componentType":5123,
+ "count":36,
+ "type":"SCALAR"
},
{
"bufferView":42,
"componentType":5126,
- "count":4,
- "type":"VEC2"
+ "count":24,
+ "max":[
+ 0.4999999403953552,
+ 0.9999998807907104,
+ 0.9999998807907104
+ ],
+ "min":[
+ -0.4999999403953552,
+ -4.371138473402425e-08,
+ -0.9999998807907104
+ ],
+ "type":"VEC3"
},
{
"bufferView":43,
"componentType":5126,
- "count":10,
- "max":[
- 1,
- -0.4558880031108856,
- 1
- ],
- "min":[
- -1,
- -1,
- -1
- ],
+ "count":24,
"type":"VEC3"
},
{
"bufferView":44,
"componentType":5126,
- "count":10,
- "type":"VEC3"
+ "count":24,
+ "type":"VEC2"
},
{
"bufferView":45,
"componentType":5126,
- "count":10,
- "type":"VEC2"
+ "count":24,
+ "max":[
+ 2.499999761581421,
+ 0.050000015646219254,
+ 0.4999999403953552
+ ],
+ "min":[
+ -2.499999761581421,
+ -0.050000015646219254,
+ -0.4999999403953552
+ ],
+ "type":"VEC3"
},
{
"bufferView":46,
"componentType":5126,
- "count":4,
- "max":[
- 1,
- -0.4558880031108856,
- -1
- ],
- "min":[
- -1,
- -1,
- -1
- ],
+ "count":24,
"type":"VEC3"
},
{
"bufferView":47,
"componentType":5126,
- "count":4,
- "type":"VEC3"
+ "count":24,
+ "type":"VEC2"
},
{
"bufferView":48,
"componentType":5126,
- "count":4,
- "type":"VEC2"
+ "count":24,
+ "max":[
+ 2.499999761581421,
+ 0.050000037997961044,
+ 0.9999998807907104
+ ],
+ "min":[
+ -2.499999761581421,
+ -0.050000037997961044,
+ -0.9999998807907104
+ ],
+ "type":"VEC3"
},
{
"bufferView":49,
"componentType":5126,
- "count":4,
- "max":[
- 1,
- -0.4558880031108856,
- 1
- ],
- "min":[
- -1,
- -1,
- -1
- ],
+ "count":24,
"type":"VEC3"
},
{
"bufferView":50,
"componentType":5126,
- "count":4,
- "type":"VEC3"
+ "count":24,
+ "type":"VEC2"
},
{
"bufferView":51,
"componentType":5126,
- "count":4,
- "type":"VEC2"
+ "count":24,
+ "max":[
+ 2.499999761581421,
+ 0.050000060349702835,
+ 1.499999761581421
+ ],
+ "min":[
+ -2.499999761581421,
+ -0.050000060349702835,
+ -1.499999761581421
+ ],
+ "type":"VEC3"
},
{
"bufferView":52,
"componentType":5126,
- "count":10,
- "max":[
- 1,
- 1.6414799690246582,
- 1
- ],
- "min":[
- -1,
- -1,
- -1
- ],
+ "count":24,
"type":"VEC3"
},
{
"bufferView":53,
"componentType":5126,
- "count":10,
- "type":"VEC3"
+ "count":24,
+ "type":"VEC2"
},
{
"bufferView":54,
"componentType":5126,
- "count":10,
- "type":"VEC2"
+ "count":24,
+ "max":[
+ 2.499999761581421,
+ 0.05000007897615433,
+ 1.999999761581421
+ ],
+ "min":[
+ -2.499999761581421,
+ -0.05000007897615433,
+ -1.999999761581421
+ ],
+ "type":"VEC3"
},
{
"bufferView":55,
"componentType":5126,
- "count":4,
- "max":[
- 1,
- 1.6414799690246582,
- -1
- ],
- "min":[
- -1,
- -1,
- -1
- ],
+ "count":24,
"type":"VEC3"
},
{
"bufferView":56,
"componentType":5126,
- "count":4,
- "type":"VEC3"
+ "count":24,
+ "type":"VEC2"
},
{
"bufferView":57,
"componentType":5126,
- "count":4,
- "type":"VEC2"
+ "count":24,
+ "max":[
+ 2.499999761581421,
+ 0.05000010132789612,
+ 2.499999761581421
+ ],
+ "min":[
+ -2.499999761581421,
+ -0.05000010132789612,
+ -2.499999761581421
+ ],
+ "type":"VEC3"
},
{
"bufferView":58,
"componentType":5126,
- "count":4,
- "max":[
- 1,
- 1.6414799690246582,
- 1
- ],
- "min":[
- -1,
- -1,
- -1
- ],
+ "count":24,
"type":"VEC3"
},
{
"bufferView":59,
"componentType":5126,
- "count":4,
- "type":"VEC3"
+ "count":24,
+ "type":"VEC2"
},
{
"bufferView":60,
"componentType":5126,
- "count":4,
+ "count":18,
+ "max":[
+ 0.4999999403953552,
+ 3.0003318786621094,
+ 0.00022745128080714494
+ ],
+ "min":[
+ -0.4999999403953552,
+ 0.0002274513099109754,
+ -5.999771595001221
+ ],
+ "type":"VEC3"
+ },
+ {
+ "bufferView":61,
+ "componentType":5126,
+ "count":18,
+ "type":"VEC3"
+ },
+ {
+ "bufferView":62,
+ "componentType":5126,
+ "count":18,
"type":"VEC2"
+ },
+ {
+ "bufferView":63,
+ "componentType":5123,
+ "count":24,
+ "type":"SCALAR"
+ },
+ {
+ "bufferView":64,
+ "componentType":5126,
+ "count":18,
+ "max":[
+ 0.4999999403953552,
+ 2.000028371810913,
+ -3.5524364648154005e-05
+ ],
+ "min":[
+ -0.4999999403953552,
+ 2.8614193070097826e-05,
+ -4.000034809112549
+ ],
+ "type":"VEC3"
+ },
+ {
+ "bufferView":65,
+ "componentType":5126,
+ "count":18,
+ "type":"VEC3"
+ },
+ {
+ "bufferView":66,
+ "componentType":5126,
+ "count":18,
+ "type":"VEC2"
+ },
+ {
+ "bufferView":67,
+ "componentType":5123,
+ "count":24,
+ "type":"SCALAR"
+ },
+ {
+ "bufferView":68,
+ "componentType":5126,
+ "count":18,
+ "max":[
+ 0.4999999403953552,
+ 1.0003323554992676,
+ 0.00022757049009669572
+ ],
+ "min":[
+ -0.4999999403953552,
+ 0.00033243000507354736,
+ -1.999772071838379
+ ],
+ "type":"VEC3"
+ },
+ {
+ "bufferView":69,
+ "componentType":5126,
+ "count":18,
+ "type":"VEC3"
+ },
+ {
+ "bufferView":70,
+ "componentType":5126,
+ "count":18,
+ "type":"VEC2"
+ },
+ {
+ "bufferView":71,
+ "componentType":5123,
+ "count":24,
+ "type":"SCALAR"
+ },
+ {
+ "bufferView":72,
+ "componentType":5126,
+ "count":236,
+ "max":[
+ 0.4999999403953552,
+ 3.0003318786621094,
+ 0.00022745128080714494
+ ],
+ "min":[
+ -0.4999999403953552,
+ 0.0002274513099109754,
+ -5.999771595001221
+ ],
+ "type":"VEC3"
+ },
+ {
+ "bufferView":73,
+ "componentType":5126,
+ "count":236,
+ "type":"VEC3"
+ },
+ {
+ "bufferView":74,
+ "componentType":5126,
+ "count":236,
+ "type":"VEC2"
+ },
+ {
+ "bufferView":75,
+ "componentType":5123,
+ "count":372,
+ "type":"SCALAR"
+ },
+ {
+ "bufferView":76,
+ "componentType":5126,
+ "count":161,
+ "max":[
+ 0.4999999403953552,
+ 2.000028371810913,
+ -3.5524364648154005e-05
+ ],
+ "min":[
+ -0.4999999403953552,
+ 2.8614193070097826e-05,
+ -4.000034809112549
+ ],
+ "type":"VEC3"
+ },
+ {
+ "bufferView":77,
+ "componentType":5126,
+ "count":161,
+ "type":"VEC3"
+ },
+ {
+ "bufferView":78,
+ "componentType":5126,
+ "count":161,
+ "type":"VEC2"
+ },
+ {
+ "bufferView":79,
+ "componentType":5123,
+ "count":252,
+ "type":"SCALAR"
+ },
+ {
+ "bufferView":80,
+ "componentType":5126,
+ "count":85,
+ "max":[
+ 0.4999999403953552,
+ 1.0003323554992676,
+ 0.00022757049009669572
+ ],
+ "min":[
+ -0.4999999403953552,
+ 0.00033243000507354736,
+ -1.999772071838379
+ ],
+ "type":"VEC3"
+ },
+ {
+ "bufferView":81,
+ "componentType":5126,
+ "count":85,
+ "type":"VEC3"
+ },
+ {
+ "bufferView":82,
+ "componentType":5126,
+ "count":85,
+ "type":"VEC2"
+ },
+ {
+ "bufferView":83,
+ "componentType":5123,
+ "count":132,
+ "type":"SCALAR"
+ },
+ {
+ "bufferView":84,
+ "componentType":5126,
+ "count":24,
+ "max":[
+ 0.04999999329447746,
+ 2.999999523162842,
+ 0.4999999403953552
+ ],
+ "min":[
+ -0.04999999329447746,
+ -2.1855692367012125e-08,
+ -0.5000000596046448
+ ],
+ "type":"VEC3"
+ },
+ {
+ "bufferView":85,
+ "componentType":5126,
+ "count":24,
+ "type":"VEC3"
+ },
+ {
+ "bufferView":86,
+ "componentType":5126,
+ "count":24,
+ "type":"VEC2"
+ },
+ {
+ "bufferView":87,
+ "componentType":5126,
+ "count":24,
+ "max":[
+ 0.04999999329447746,
+ 2.999999523162842,
+ 0.9999998807907104
+ ],
+ "min":[
+ -0.04999999329447746,
+ -1.6292067073209182e-07,
+ -1
+ ],
+ "type":"VEC3"
+ },
+ {
+ "bufferView":88,
+ "componentType":5126,
+ "count":24,
+ "type":"VEC3"
+ },
+ {
+ "bufferView":89,
+ "componentType":5126,
+ "count":24,
+ "type":"VEC2"
+ },
+ {
+ "bufferView":90,
+ "componentType":5126,
+ "count":24,
+ "max":[
+ 0.04999999329447746,
+ 2.999999523162842,
+ 1.499999761581421
+ ],
+ "min":[
+ -0.04999999329447746,
+ -3.0398561534639157e-07,
+ -1.4999998807907104
+ ],
+ "type":"VEC3"
+ },
+ {
+ "bufferView":91,
+ "componentType":5126,
+ "count":24,
+ "type":"VEC3"
+ },
+ {
+ "bufferView":92,
+ "componentType":5126,
+ "count":24,
+ "type":"VEC2"
+ },
+ {
+ "bufferView":93,
+ "componentType":5126,
+ "count":24,
+ "max":[
+ 0.04999541491270065,
+ 2.999999523162842,
+ 1.9999988079071045
+ ],
+ "min":[
+ -0.0500030443072319,
+ -8.742281210061265e-08,
+ -2.0000009536743164
+ ],
+ "type":"VEC3"
+ },
+ {
+ "bufferView":94,
+ "componentType":5126,
+ "count":24,
+ "type":"VEC3"
+ },
+ {
+ "bufferView":95,
+ "componentType":5126,
+ "count":24,
+ "type":"VEC2"
+ },
+ {
+ "bufferView":96,
+ "componentType":5126,
+ "count":24,
+ "max":[
+ 0.04999999329447746,
+ 2.999999523162842,
+ 2.499999761581421
+ ],
+ "min":[
+ -0.04999999329447746,
+ -2.2848773539863032e-07,
+ -2.5
+ ],
+ "type":"VEC3"
+ },
+ {
+ "bufferView":97,
+ "componentType":5126,
+ "count":24,
+ "type":"VEC3"
+ },
+ {
+ "bufferView":98,
+ "componentType":5126,
+ "count":24,
+ "type":"VEC2"
+ },
+ {
+ "bufferView":99,
+ "componentType":5126,
+ "count":24,
+ "max":[
+ 0.04999999329447746,
+ 1.999999761581421,
+ 0.4999999403953552
+ ],
+ "min":[
+ -0.04999999329447746,
+ -2.1855692367012125e-08,
+ -0.5
+ ],
+ "type":"VEC3"
+ },
+ {
+ "bufferView":100,
+ "componentType":5126,
+ "count":24,
+ "type":"VEC3"
+ },
+ {
+ "bufferView":101,
+ "componentType":5126,
+ "count":24,
+ "type":"VEC2"
+ },
+ {
+ "bufferView":102,
+ "componentType":5126,
+ "count":24,
+ "max":[
+ 0.04999999329447746,
+ 1.999999761581421,
+ 0.9999998807907104
+ ],
+ "min":[
+ -0.04999999329447746,
+ -4.371138473402425e-08,
+ -1
+ ],
+ "type":"VEC3"
+ },
+ {
+ "bufferView":103,
+ "componentType":5126,
+ "count":24,
+ "type":"VEC3"
+ },
+ {
+ "bufferView":104,
+ "componentType":5126,
+ "count":24,
+ "type":"VEC2"
+ },
+ {
+ "bufferView":105,
+ "componentType":5126,
+ "count":24,
+ "max":[
+ 0.04999999329447746,
+ 1.999999761581421,
+ 1.499999761581421
+ ],
+ "min":[
+ -0.04999999329447746,
+ -6.556707177196586e-08,
+ -1.4999998807907104
+ ],
+ "type":"VEC3"
+ },
+ {
+ "bufferView":106,
+ "componentType":5126,
+ "count":24,
+ "type":"VEC3"
+ },
+ {
+ "bufferView":107,
+ "componentType":5126,
+ "count":24,
+ "type":"VEC2"
+ },
+ {
+ "bufferView":108,
+ "componentType":5126,
+ "count":24,
+ "max":[
+ 0.04999999329447746,
+ 1.999999761581421,
+ 1.999999761581421
+ ],
+ "min":[
+ -0.04999999329447746,
+ -8.74227694680485e-08,
+ -1.999999761581421
+ ],
+ "type":"VEC3"
+ },
+ {
+ "bufferView":109,
+ "componentType":5126,
+ "count":24,
+ "type":"VEC3"
+ },
+ {
+ "bufferView":110,
+ "componentType":5126,
+ "count":24,
+ "type":"VEC2"
+ },
+ {
+ "bufferView":111,
+ "componentType":5126,
+ "count":24,
+ "max":[
+ 0.04999999329447746,
+ 1.999999761581421,
+ 2.499999761581421
+ ],
+ "min":[
+ -0.04999999329447746,
+ -1.0927846005870379e-07,
+ -2.499999761581421
+ ],
+ "type":"VEC3"
+ },
+ {
+ "bufferView":112,
+ "componentType":5126,
+ "count":24,
+ "type":"VEC3"
+ },
+ {
+ "bufferView":113,
+ "componentType":5126,
+ "count":24,
+ "type":"VEC2"
+ },
+ {
+ "bufferView":114,
+ "componentType":5126,
+ "count":24,
+ "max":[
+ 0.050000183284282684,
+ 0.9999998807907104,
+ 0.4999999403953552
+ ],
+ "min":[
+ -0.050000183284282684,
+ -1.813040206855021e-08,
+ -0.5
+ ],
+ "type":"VEC3"
+ },
+ {
+ "bufferView":115,
+ "componentType":5126,
+ "count":24,
+ "type":"VEC3"
+ },
+ {
+ "bufferView":116,
+ "componentType":5126,
+ "count":24,
+ "type":"VEC2"
+ },
+ {
+ "bufferView":117,
+ "componentType":5126,
+ "count":24,
+ "max":[
+ 0.04999999329447746,
+ 0.9999998807907104,
+ 0.9999998807907104
+ ],
+ "min":[
+ -0.04999999329447746,
+ -4.371138473402425e-08,
+ -0.9999998807907104
+ ],
+ "type":"VEC3"
+ },
+ {
+ "bufferView":118,
+ "componentType":5126,
+ "count":24,
+ "type":"VEC3"
+ },
+ {
+ "bufferView":119,
+ "componentType":5126,
+ "count":24,
+ "type":"VEC2"
+ },
+ {
+ "bufferView":120,
+ "componentType":5126,
+ "count":24,
+ "max":[
+ 0.04999999329447746,
+ 1,
+ 1.499999761581421
+ ],
+ "min":[
+ -0.04999999329447746,
+ -6.556707177196586e-08,
+ -1.499999761581421
+ ],
+ "type":"VEC3"
+ },
+ {
+ "bufferView":121,
+ "componentType":5126,
+ "count":24,
+ "type":"VEC3"
+ },
+ {
+ "bufferView":122,
+ "componentType":5126,
+ "count":24,
+ "type":"VEC2"
+ },
+ {
+ "bufferView":123,
+ "componentType":5126,
+ "count":24,
+ "max":[
+ 0.04999999329447746,
+ 1,
+ 1.999999761581421
+ ],
+ "min":[
+ -0.04999999329447746,
+ -1.2916968827880737e-08,
+ -1.999999761581421
+ ],
+ "type":"VEC3"
+ },
+ {
+ "bufferView":124,
+ "componentType":5126,
+ "count":24,
+ "type":"VEC3"
+ },
+ {
+ "bufferView":125,
+ "componentType":5126,
+ "count":24,
+ "type":"VEC2"
+ },
+ {
+ "bufferView":126,
+ "componentType":5126,
+ "count":24,
+ "max":[
+ 0.04999999329447746,
+ 1,
+ 2.499999761581421
+ ],
+ "min":[
+ -0.04999999329447746,
+ -1.0927846005870379e-07,
+ -2.499999761581421
+ ],
+ "type":"VEC3"
+ },
+ {
+ "bufferView":127,
+ "componentType":5126,
+ "count":24,
+ "type":"VEC3"
+ },
+ {
+ "bufferView":128,
+ "componentType":5126,
+ "count":24,
+ "type":"VEC2"
+ },
+ {
+ "bufferView":129,
+ "componentType":5126,
+ "count":382,
+ "max":[
+ 0.05724317580461502,
+ 0.4224211871623993,
+ 0.05457004904747009
+ ],
+ "min":[
+ -0.05724314972758293,
+ 0.0012002572184428573,
+ -0.05991627275943756
+ ],
+ "type":"VEC3"
+ },
+ {
+ "bufferView":130,
+ "componentType":5126,
+ "count":382,
+ "type":"VEC3"
+ },
+ {
+ "bufferView":131,
+ "componentType":5126,
+ "count":382,
+ "type":"VEC2"
+ },
+ {
+ "bufferView":132,
+ "componentType":5123,
+ "count":540,
+ "type":"SCALAR"
+ },
+ {
+ "bufferView":133,
+ "componentType":5126,
+ "count":114,
+ "max":[
+ 0.06740549951791763,
+ 0.10032343864440918,
+ 0.02499999850988388
+ ],
+ "min":[
+ -0.06740549951791763,
+ -0.10032343864440918,
+ -0.02500000223517418
+ ],
+ "type":"VEC3"
+ },
+ {
+ "bufferView":134,
+ "componentType":5126,
+ "count":114,
+ "type":"VEC3"
+ },
+ {
+ "bufferView":135,
+ "componentType":5126,
+ "count":114,
+ "type":"VEC2"
+ },
+ {
+ "bufferView":136,
+ "componentType":5123,
+ "count":192,
+ "type":"SCALAR"
+ },
+ {
+ "bufferView":137,
+ "componentType":5126,
+ "count":72,
+ "max":[
+ 0.04999999329447746,
+ 0.04999999329447746,
+ 0.005000004079192877
+ ],
+ "min":[
+ -0.04999999329447746,
+ -0.04999999329447746,
+ -0.005000004079192877
+ ],
+ "type":"VEC3"
+ },
+ {
+ "bufferView":138,
+ "componentType":5126,
+ "count":72,
+ "type":"VEC3"
+ },
+ {
+ "bufferView":139,
+ "componentType":5126,
+ "count":72,
+ "type":"VEC2"
+ },
+ {
+ "bufferView":140,
+ "componentType":5123,
+ "count":132,
+ "type":"SCALAR"
+ },
+ {
+ "bufferView":141,
+ "componentType":5126,
+ "count":24,
+ "max":[
+ 0.018591072410345078,
+ 1.3600126504898071,
+ 1.7428401708602905
+ ],
+ "min":[
+ -0.018591072410345078,
+ -1.3600126504898071,
+ -1.7428401708602905
+ ],
+ "type":"VEC3"
+ },
+ {
+ "bufferView":142,
+ "componentType":5126,
+ "count":24,
+ "type":"VEC3"
+ },
+ {
+ "bufferView":143,
+ "componentType":5126,
+ "count":24,
+ "type":"VEC2"
+ },
+ {
+ "bufferView":144,
+ "componentType":5123,
+ "count":36,
+ "type":"SCALAR"
+ },
+ {
+ "bufferView":145,
+ "componentType":5126,
+ "count":82,
+ "max":[
+ 0.04999999329447746,
+ 2.9999873638153076,
+ 1.999999761581421
+ ],
+ "min":[
+ -0.04999999329447746,
+ -1.2485186744015664e-05,
+ -2
+ ],
+ "type":"VEC3"
+ },
+ {
+ "bufferView":146,
+ "componentType":5126,
+ "count":82,
+ "type":"VEC3"
+ },
+ {
+ "bufferView":147,
+ "componentType":5126,
+ "count":82,
+ "type":"VEC2"
+ },
+ {
+ "bufferView":148,
+ "componentType":5123,
+ "count":132,
+ "type":"SCALAR"
+ },
+ {
+ "bufferView":149,
+ "componentType":5126,
+ "count":24,
+ "max":[
+ 0.03084360621869564,
+ 0.9216107726097107,
+ 0.38780587911605835
+ ],
+ "min":[
+ -0.03084360435605049,
+ -0.9216108918190002,
+ -0.3878057301044464
+ ],
+ "type":"VEC3"
+ },
+ {
+ "bufferView":150,
+ "componentType":5126,
+ "count":24,
+ "type":"VEC3"
+ },
+ {
+ "bufferView":151,
+ "componentType":5126,
+ "count":24,
+ "type":"VEC2"
+ },
+ {
+ "bufferView":152,
+ "componentType":5123,
+ "count":36,
+ "type":"SCALAR"
+ },
+ {
+ "bufferView":153,
+ "componentType":5126,
+ "count":76,
+ "max":[
+ 0.04999999329447746,
+ 1.9998888969421387,
+ 0.4999999403953552
+ ],
+ "min":[
+ -0.04999999329447746,
+ -0.00011100569099653512,
+ -0.5
+ ],
+ "type":"VEC3"
+ },
+ {
+ "bufferView":154,
+ "componentType":5126,
+ "count":76,
+ "type":"VEC3"
+ },
+ {
+ "bufferView":155,
+ "componentType":5126,
+ "count":76,
+ "type":"VEC2"
+ },
+ {
+ "bufferView":156,
+ "componentType":5123,
+ "count":132,
+ "type":"SCALAR"
+ },
+ {
+ "bufferView":157,
+ "componentType":5126,
+ "count":24,
+ "max":[
+ 0.03084360621869564,
+ 1.8431105613708496,
+ 0.00036397576332092285
+ ],
+ "min":[
+ -0.03084360435605049,
+ -0.00011105053272331133,
+ -0.7752476334571838
+ ],
+ "type":"VEC3"
+ },
+ {
+ "bufferView":158,
+ "componentType":5126,
+ "count":24,
+ "type":"VEC3"
+ },
+ {
+ "bufferView":159,
+ "componentType":5126,
+ "count":24,
+ "type":"VEC2"
+ },
+ {
+ "bufferView":160,
+ "componentType":5126,
+ "count":76,
+ "max":[
+ 0.04999999329447746,
+ 1.9998888969421387,
+ 0.4999999403953552
+ ],
+ "min":[
+ -0.04999999329447746,
+ -0.00011100569099653512,
+ -0.5
+ ],
+ "type":"VEC3"
+ },
+ {
+ "bufferView":161,
+ "componentType":5126,
+ "count":76,
+ "type":"VEC3"
+ },
+ {
+ "bufferView":162,
+ "componentType":5126,
+ "count":76,
+ "type":"VEC2"
+ },
+ {
+ "bufferView":163,
+ "componentType":5126,
+ "count":460,
+ "max":[
+ 0.04999999329447746,
+ 2.999999523162842,
+ 0.2499999701976776
+ ],
+ "min":[
+ -0.04999999329447746,
+ -1.9868542366907604e-08,
+ -0.25000008940696716
+ ],
+ "type":"VEC3"
+ },
+ {
+ "bufferView":164,
+ "componentType":5126,
+ "count":460,
+ "type":"VEC3"
+ },
+ {
+ "bufferView":165,
+ "componentType":5126,
+ "count":460,
+ "type":"VEC2"
+ },
+ {
+ "bufferView":166,
+ "componentType":5123,
+ "count":1152,
+ "type":"SCALAR"
+ },
+ {
+ "bufferView":167,
+ "componentType":5126,
+ "count":340,
+ "max":[
+ 0.04999999329447746,
+ 2.0999996662139893,
+ 0.2499999701976776
+ ],
+ "min":[
+ -0.04999999329447746,
+ -1.9868542366907604e-08,
+ -0.2500000596046448
+ ],
+ "type":"VEC3"
+ },
+ {
+ "bufferView":168,
+ "componentType":5126,
+ "count":340,
+ "type":"VEC3"
+ },
+ {
+ "bufferView":169,
+ "componentType":5126,
+ "count":340,
+ "type":"VEC2"
+ },
+ {
+ "bufferView":170,
+ "componentType":5123,
+ "count":828,
+ "type":"SCALAR"
+ },
+ {
+ "bufferView":171,
+ "componentType":5126,
+ "count":220,
+ "max":[
+ 0.04999999329447746,
+ 1.1999998092651367,
+ 0.2499999701976776
+ ],
+ "min":[
+ -0.04999999329447746,
+ -2.582900471281846e-08,
+ -0.2500000298023224
+ ],
+ "type":"VEC3"
+ },
+ {
+ "bufferView":172,
+ "componentType":5126,
+ "count":220,
+ "type":"VEC3"
+ },
+ {
+ "bufferView":173,
+ "componentType":5126,
+ "count":220,
+ "type":"VEC2"
+ },
+ {
+ "bufferView":174,
+ "componentType":5123,
+ "count":504,
+ "type":"SCALAR"
+ },
+ {
+ "bufferView":175,
+ "componentType":5126,
+ "count":241,
+ "max":[
+ 0.19999997317790985,
+ 6.073268110640129e-08,
+ 0.19999991357326508
+ ],
+ "min":[
+ -0.19999997317790985,
+ -0.5,
+ -0.20000003278255463
+ ],
+ "type":"VEC3"
+ },
+ {
+ "bufferView":176,
+ "componentType":5126,
+ "count":241,
+ "type":"VEC3"
+ },
+ {
+ "bufferView":177,
+ "componentType":5126,
+ "count":241,
+ "type":"VEC2"
+ },
+ {
+ "bufferView":178,
+ "componentType":5123,
+ "count":432,
+ "type":"SCALAR"
+ },
+ {
+ "bufferView":179,
+ "componentType":5126,
+ "count":102,
+ "max":[
+ 0.4999999403953552,
+ 0.9999998807907104,
+ 0.4999999403953552
+ ],
+ "min":[
+ -0.4999999403953552,
+ -2.1855692367012125e-08,
+ -0.5
+ ],
+ "type":"VEC3"
+ },
+ {
+ "bufferView":180,
+ "componentType":5126,
+ "count":102,
+ "type":"VEC3"
+ },
+ {
+ "bufferView":181,
+ "componentType":5126,
+ "count":102,
+ "type":"VEC2"
+ },
+ {
+ "bufferView":182,
+ "componentType":5123,
+ "count":168,
+ "type":"SCALAR"
+ },
+ {
+ "bufferView":183,
+ "componentType":5126,
+ "count":24,
+ "max":[
+ 0.03084360621869564,
+ 1.8431105613708496,
+ 0.00036397576332092285
+ ],
+ "min":[
+ -0.03084360435605049,
+ -0.00011105053272331133,
+ -0.7752476334571838
+ ],
+ "type":"VEC3"
+ },
+ {
+ "bufferView":184,
+ "componentType":5126,
+ "count":24,
+ "type":"VEC3"
+ },
+ {
+ "bufferView":185,
+ "componentType":5126,
+ "count":24,
+ "type":"VEC2"
+ },
+ {
+ "bufferView":186,
+ "componentType":5126,
+ "count":170,
+ "max":[
+ 0.07151994109153748,
+ 1.9998888969421387,
+ 0.9999998807907104
+ ],
+ "min":[
+ -0.07151994109153748,
+ -0.00011103411816293374,
+ -0.9999998807907104
+ ],
+ "type":"VEC3"
+ },
+ {
+ "bufferView":187,
+ "componentType":5126,
+ "count":170,
+ "type":"VEC3"
+ },
+ {
+ "bufferView":188,
+ "componentType":5126,
+ "count":170,
+ "type":"VEC2"
+ },
+ {
+ "bufferView":189,
+ "componentType":5123,
+ "count":348,
+ "type":"SCALAR"
+ },
+ {
+ "bufferView":190,
+ "componentType":5126,
+ "count":24,
+ "max":[
+ 0.03084360621869564,
+ 1.8431105613708496,
+ 0.00036397576332092285
+ ],
+ "min":[
+ -0.03084360435605049,
+ -0.00011105053272331133,
+ -0.7752476334571838
+ ],
+ "type":"VEC3"
+ },
+ {
+ "bufferView":191,
+ "componentType":5126,
+ "count":24,
+ "type":"VEC3"
+ },
+ {
+ "bufferView":192,
+ "componentType":5126,
+ "count":24,
+ "type":"VEC2"
+ },
+ {
+ "bufferView":193,
+ "componentType":5126,
+ "count":24,
+ "max":[
+ 0.030843671411275864,
+ 1.8431105613708496,
+ 0.7752476334571838
+ ],
+ "min":[
+ -0.03084360621869564,
+ -0.00011105053272331133,
+ -0.00036397846997715533
+ ],
+ "type":"VEC3"
+ },
+ {
+ "bufferView":194,
+ "componentType":5126,
+ "count":24,
+ "type":"VEC3"
+ },
+ {
+ "bufferView":195,
+ "componentType":5126,
+ "count":24,
+ "type":"VEC2"
+ },
+ {
+ "bufferView":196,
+ "componentType":5123,
+ "count":36,
+ "type":"SCALAR"
+ },
+ {
+ "bufferView":197,
+ "componentType":5126,
+ "count":170,
+ "max":[
+ 0.07151994109153748,
+ 1.9998888969421387,
+ 0.9999998807907104
+ ],
+ "min":[
+ -0.07151994109153748,
+ -0.00011103411816293374,
+ -0.9999998807907104
+ ],
+ "type":"VEC3"
+ },
+ {
+ "bufferView":198,
+ "componentType":5126,
+ "count":170,
+ "type":"VEC3"
+ },
+ {
+ "bufferView":199,
+ "componentType":5126,
+ "count":170,
+ "type":"VEC2"
+ },
+ {
+ "bufferView":200,
+ "componentType":5126,
+ "count":72,
+ "max":[
+ 0.5816828608512878,
+ 1.8431105613708496,
+ 0.581684947013855
+ ],
+ "min":[
+ -0.5816853642463684,
+ -0.00011105053272331133,
+ -0.5816827416419983
+ ],
+ "type":"VEC3"
+ },
+ {
+ "bufferView":201,
+ "componentType":5126,
+ "count":72,
+ "type":"VEC3"
+ },
+ {
+ "bufferView":202,
+ "componentType":5126,
+ "count":72,
+ "type":"VEC2"
+ },
+ {
+ "bufferView":203,
+ "componentType":5123,
+ "count":132,
+ "type":"SCALAR"
+ },
+ {
+ "bufferView":204,
+ "componentType":5126,
+ "count":170,
+ "max":[
+ 0.07151994109153748,
+ 1.9998888969421387,
+ 0.9999998807907104
+ ],
+ "min":[
+ -0.07151994109153748,
+ -0.00011103411816293374,
+ -0.9999998807907104
+ ],
+ "type":"VEC3"
+ },
+ {
+ "bufferView":205,
+ "componentType":5126,
+ "count":170,
+ "type":"VEC3"
+ },
+ {
+ "bufferView":206,
+ "componentType":5126,
+ "count":170,
+ "type":"VEC2"
+ },
+ {
+ "bufferView":207,
+ "componentType":5126,
+ "count":24,
+ "max":[
+ 0.00036398175870999694,
+ 1.8431105613708496,
+ 0.03084360435605049
+ ],
+ "min":[
+ -0.9449979066848755,
+ -0.0001110579542000778,
+ -0.030843790620565414
+ ],
+ "type":"VEC3"
+ },
+ {
+ "bufferView":208,
+ "componentType":5126,
+ "count":24,
+ "type":"VEC3"
+ },
+ {
+ "bufferView":209,
+ "componentType":5126,
+ "count":24,
+ "type":"VEC2"
+ },
+ {
+ "bufferView":210,
+ "componentType":5123,
+ "count":36,
+ "type":"SCALAR"
+ },
+ {
+ "bufferView":211,
+ "componentType":5126,
+ "count":24,
+ "max":[
+ 0.9449979066848755,
+ 1.8431105613708496,
+ 0.03084360621869564
+ ],
+ "min":[
+ -0.00036398175870999694,
+ -0.0001110579542000778,
+ -0.030843788757920265
+ ],
+ "type":"VEC3"
+ },
+ {
+ "bufferView":212,
+ "componentType":5126,
+ "count":24,
+ "type":"VEC3"
+ },
+ {
+ "bufferView":213,
+ "componentType":5126,
+ "count":24,
+ "type":"VEC2"
+ },
+ {
+ "bufferView":214,
+ "componentType":5123,
+ "count":36,
+ "type":"SCALAR"
+ },
+ {
+ "bufferView":215,
+ "componentType":5126,
+ "count":52,
+ "max":[
+ 0.9999996423721313,
+ 2,
+ 0.9999998807907104
+ ],
+ "min":[
+ -1.0000001192092896,
+ -1.6292067073209182e-07,
+ -1.000000238418579
+ ],
+ "type":"VEC3"
+ },
+ {
+ "bufferView":216,
+ "componentType":5126,
+ "count":52,
+ "type":"VEC3"
+ },
+ {
+ "bufferView":217,
+ "componentType":5126,
+ "count":52,
+ "type":"VEC2"
+ },
+ {
+ "bufferView":218,
+ "componentType":5123,
+ "count":84,
+ "type":"SCALAR"
+ },
+ {
+ "bufferView":219,
+ "componentType":5126,
+ "count":506,
+ "max":[
+ 1.4354559183120728,
+ 3.999999523162842,
+ 0.9999998807907104
+ ],
+ "min":[
+ -1.4354559183120728,
+ -4.371138473402425e-08,
+ -1
+ ],
+ "type":"VEC3"
+ },
+ {
+ "bufferView":220,
+ "componentType":5126,
+ "count":506,
+ "type":"VEC3"
+ },
+ {
+ "bufferView":221,
+ "componentType":5126,
+ "count":506,
+ "type":"VEC2"
+ },
+ {
+ "bufferView":222,
+ "componentType":5123,
+ "count":1008,
+ "type":"SCALAR"
+ },
+ {
+ "bufferView":223,
+ "componentType":5126,
+ "count":712,
+ "max":[
+ 1.4354559183120728,
+ 5.999999046325684,
+ 0.9999998807907104
+ ],
+ "min":[
+ -1.4354559183120728,
+ -4.371138473402425e-08,
+ -1
+ ],
+ "type":"VEC3"
+ },
+ {
+ "bufferView":224,
+ "componentType":5126,
+ "count":712,
+ "type":"VEC3"
+ },
+ {
+ "bufferView":225,
+ "componentType":5126,
+ "count":712,
+ "type":"VEC2"
+ },
+ {
+ "bufferView":226,
+ "componentType":5123,
+ "count":1464,
+ "type":"SCALAR"
+ },
+ {
+ "bufferView":227,
+ "componentType":5126,
+ "count":24,
+ "max":[
+ 0,
+ 0.05000005289912224,
+ 0.4999999403953552
+ ],
+ "min":[
+ -0.4999999403953552,
+ -6.069742397585287e-08,
+ -0.5
+ ],
+ "type":"VEC3"
+ },
+ {
+ "bufferView":228,
+ "componentType":5126,
+ "count":24,
+ "type":"VEC3"
+ },
+ {
+ "bufferView":229,
+ "componentType":5126,
+ "count":24,
+ "type":"VEC2"
+ },
+ {
+ "bufferView":230,
+ "componentType":5123,
+ "count":36,
+ "type":"SCALAR"
+ },
+ {
+ "bufferView":231,
+ "componentType":5126,
+ "count":48,
+ "max":[
+ 0.2499999701976776,
+ 0.4999999403953552,
+ 0.4999999403953552
+ ],
+ "min":[
+ -0.2499999701976776,
+ -1.0927846183506063e-08,
+ -0.5
+ ],
+ "type":"VEC3"
+ },
+ {
+ "bufferView":232,
+ "componentType":5126,
+ "count":48,
+ "type":"VEC3"
+ },
+ {
+ "bufferView":233,
+ "componentType":5126,
+ "count":48,
+ "type":"VEC2"
+ },
+ {
+ "bufferView":234,
+ "componentType":5123,
+ "count":84,
+ "type":"SCALAR"
+ },
+ {
+ "bufferView":235,
+ "componentType":5126,
+ "count":52,
+ "max":[
+ 1.0006628036499023,
+ 0.5223727226257324,
+ 1.5031088590621948
+ ],
+ "min":[
+ -1.0006264448165894,
+ -0.022372841835021973,
+ -1.5032962560653687
+ ],
+ "type":"VEC3"
+ },
+ {
+ "bufferView":236,
+ "componentType":5126,
+ "count":52,
+ "type":"VEC3"
+ },
+ {
+ "bufferView":237,
+ "componentType":5126,
+ "count":52,
+ "type":"VEC2"
+ },
+ {
+ "bufferView":238,
+ "componentType":5123,
+ "count":84,
+ "type":"SCALAR"
+ },
+ {
+ "bufferView":239,
+ "componentType":5126,
+ "count":102,
+ "max":[
+ 0.4999999403953552,
+ 1.499999761581421,
+ 0.4999999403953552
+ ],
+ "min":[
+ -0.4999999403953552,
+ -2.1855692367012125e-08,
+ -0.5
+ ],
+ "type":"VEC3"
+ },
+ {
+ "bufferView":240,
+ "componentType":5126,
+ "count":102,
+ "type":"VEC3"
+ },
+ {
+ "bufferView":241,
+ "componentType":5126,
+ "count":102,
+ "type":"VEC2"
+ },
+ {
+ "bufferView":242,
+ "componentType":5123,
+ "count":168,
+ "type":"SCALAR"
+ },
+ {
+ "bufferView":243,
+ "componentType":5126,
+ "count":94,
+ "max":[
+ 0.4999999403953552,
+ 1.999999761581421,
+ 0.4999999403953552
+ ],
+ "min":[
+ -0.4999999403953552,
+ -2.1855692367012125e-08,
+ -0.5
+ ],
+ "type":"VEC3"
+ },
+ {
+ "bufferView":244,
+ "componentType":5126,
+ "count":94,
+ "type":"VEC3"
+ },
+ {
+ "bufferView":245,
+ "componentType":5126,
+ "count":94,
+ "type":"VEC2"
+ },
+ {
+ "bufferView":246,
+ "componentType":5123,
+ "count":168,
+ "type":"SCALAR"
}
],
"bufferViews":[
@@ -962,345 +5146,1461 @@
},
{
"buffer":0,
- "byteLength":120,
+ "byteLength":288,
"byteOffset":840,
"target":34962
},
{
"buffer":0,
- "byteLength":120,
- "byteOffset":960,
+ "byteLength":288,
+ "byteOffset":1128,
"target":34962
},
{
"buffer":0,
- "byteLength":80,
- "byteOffset":1080,
+ "byteLength":192,
+ "byteOffset":1416,
"target":34962
},
{
"buffer":0,
- "byteLength":24,
- "byteOffset":1160,
+ "byteLength":72,
+ "byteOffset":1608,
"target":34963
},
{
"buffer":0,
- "byteLength":48,
- "byteOffset":1184,
+ "byteLength":768,
+ "byteOffset":1680,
"target":34962
},
{
"buffer":0,
- "byteLength":48,
- "byteOffset":1232,
+ "byteLength":768,
+ "byteOffset":2448,
"target":34962
},
{
"buffer":0,
- "byteLength":32,
- "byteOffset":1280,
+ "byteLength":512,
+ "byteOffset":3216,
"target":34962
},
{
"buffer":0,
- "byteLength":12,
- "byteOffset":1312,
+ "byteLength":264,
+ "byteOffset":3728,
"target":34963
},
{
"buffer":0,
- "byteLength":48,
- "byteOffset":1324,
+ "byteLength":768,
+ "byteOffset":3992,
"target":34962
},
{
"buffer":0,
- "byteLength":48,
- "byteOffset":1372,
+ "byteLength":768,
+ "byteOffset":4760,
"target":34962
},
{
"buffer":0,
- "byteLength":32,
- "byteOffset":1420,
+ "byteLength":512,
+ "byteOffset":5528,
"target":34962
},
{
"buffer":0,
- "byteLength":12,
- "byteOffset":1452,
+ "byteLength":768,
+ "byteOffset":6040,
+ "target":34962
+ },
+ {
+ "buffer":0,
+ "byteLength":768,
+ "byteOffset":6808,
+ "target":34962
+ },
+ {
+ "buffer":0,
+ "byteLength":512,
+ "byteOffset":7576,
+ "target":34962
+ },
+ {
+ "buffer":0,
+ "byteLength":432,
+ "byteOffset":8088,
+ "target":34962
+ },
+ {
+ "buffer":0,
+ "byteLength":432,
+ "byteOffset":8520,
+ "target":34962
+ },
+ {
+ "buffer":0,
+ "byteLength":288,
+ "byteOffset":8952,
+ "target":34962
+ },
+ {
+ "buffer":0,
+ "byteLength":120,
+ "byteOffset":9240,
"target":34963
},
{
"buffer":0,
- "byteLength":120,
- "byteOffset":1464,
+ "byteLength":432,
+ "byteOffset":9360,
"target":34962
},
{
"buffer":0,
- "byteLength":120,
- "byteOffset":1584,
+ "byteLength":432,
+ "byteOffset":9792,
"target":34962
},
{
"buffer":0,
- "byteLength":80,
- "byteOffset":1704,
+ "byteLength":288,
+ "byteOffset":10224,
+ "target":34962
+ },
+ {
+ "buffer":0,
+ "byteLength":432,
+ "byteOffset":10512,
+ "target":34962
+ },
+ {
+ "buffer":0,
+ "byteLength":432,
+ "byteOffset":10944,
+ "target":34962
+ },
+ {
+ "buffer":0,
+ "byteLength":288,
+ "byteOffset":11376,
+ "target":34962
+ },
+ {
+ "buffer":0,
+ "byteLength":1176,
+ "byteOffset":11664,
+ "target":34962
+ },
+ {
+ "buffer":0,
+ "byteLength":1176,
+ "byteOffset":12840,
+ "target":34962
+ },
+ {
+ "buffer":0,
+ "byteLength":784,
+ "byteOffset":14016,
+ "target":34962
+ },
+ {
+ "buffer":0,
+ "byteLength":384,
+ "byteOffset":14800,
+ "target":34963
+ },
+ {
+ "buffer":0,
+ "byteLength":1176,
+ "byteOffset":15184,
+ "target":34962
+ },
+ {
+ "buffer":0,
+ "byteLength":1176,
+ "byteOffset":16360,
+ "target":34962
+ },
+ {
+ "buffer":0,
+ "byteLength":784,
+ "byteOffset":17536,
+ "target":34962
+ },
+ {
+ "buffer":0,
+ "byteLength":1176,
+ "byteOffset":18320,
+ "target":34962
+ },
+ {
+ "buffer":0,
+ "byteLength":1176,
+ "byteOffset":19496,
+ "target":34962
+ },
+ {
+ "buffer":0,
+ "byteLength":784,
+ "byteOffset":20672,
+ "target":34962
+ },
+ {
+ "buffer":0,
+ "byteLength":288,
+ "byteOffset":21456,
+ "target":34962
+ },
+ {
+ "buffer":0,
+ "byteLength":288,
+ "byteOffset":21744,
+ "target":34962
+ },
+ {
+ "buffer":0,
+ "byteLength":192,
+ "byteOffset":22032,
+ "target":34962
+ },
+ {
+ "buffer":0,
+ "byteLength":72,
+ "byteOffset":22224,
+ "target":34963
+ },
+ {
+ "buffer":0,
+ "byteLength":288,
+ "byteOffset":22296,
+ "target":34962
+ },
+ {
+ "buffer":0,
+ "byteLength":288,
+ "byteOffset":22584,
+ "target":34962
+ },
+ {
+ "buffer":0,
+ "byteLength":192,
+ "byteOffset":22872,
+ "target":34962
+ },
+ {
+ "buffer":0,
+ "byteLength":288,
+ "byteOffset":23064,
+ "target":34962
+ },
+ {
+ "buffer":0,
+ "byteLength":288,
+ "byteOffset":23352,
+ "target":34962
+ },
+ {
+ "buffer":0,
+ "byteLength":192,
+ "byteOffset":23640,
+ "target":34962
+ },
+ {
+ "buffer":0,
+ "byteLength":288,
+ "byteOffset":23832,
+ "target":34962
+ },
+ {
+ "buffer":0,
+ "byteLength":288,
+ "byteOffset":24120,
+ "target":34962
+ },
+ {
+ "buffer":0,
+ "byteLength":192,
+ "byteOffset":24408,
+ "target":34962
+ },
+ {
+ "buffer":0,
+ "byteLength":288,
+ "byteOffset":24600,
+ "target":34962
+ },
+ {
+ "buffer":0,
+ "byteLength":288,
+ "byteOffset":24888,
+ "target":34962
+ },
+ {
+ "buffer":0,
+ "byteLength":192,
+ "byteOffset":25176,
+ "target":34962
+ },
+ {
+ "buffer":0,
+ "byteLength":288,
+ "byteOffset":25368,
+ "target":34962
+ },
+ {
+ "buffer":0,
+ "byteLength":288,
+ "byteOffset":25656,
+ "target":34962
+ },
+ {
+ "buffer":0,
+ "byteLength":192,
+ "byteOffset":25944,
+ "target":34962
+ },
+ {
+ "buffer":0,
+ "byteLength":288,
+ "byteOffset":26136,
+ "target":34962
+ },
+ {
+ "buffer":0,
+ "byteLength":288,
+ "byteOffset":26424,
+ "target":34962
+ },
+ {
+ "buffer":0,
+ "byteLength":192,
+ "byteOffset":26712,
+ "target":34962
+ },
+ {
+ "buffer":0,
+ "byteLength":216,
+ "byteOffset":26904,
+ "target":34962
+ },
+ {
+ "buffer":0,
+ "byteLength":216,
+ "byteOffset":27120,
+ "target":34962
+ },
+ {
+ "buffer":0,
+ "byteLength":144,
+ "byteOffset":27336,
"target":34962
},
{
"buffer":0,
"byteLength":48,
- "byteOffset":1784,
+ "byteOffset":27480,
+ "target":34963
+ },
+ {
+ "buffer":0,
+ "byteLength":216,
+ "byteOffset":27528,
+ "target":34962
+ },
+ {
+ "buffer":0,
+ "byteLength":216,
+ "byteOffset":27744,
+ "target":34962
+ },
+ {
+ "buffer":0,
+ "byteLength":144,
+ "byteOffset":27960,
"target":34962
},
{
"buffer":0,
"byteLength":48,
- "byteOffset":1832,
+ "byteOffset":28104,
+ "target":34963
+ },
+ {
+ "buffer":0,
+ "byteLength":216,
+ "byteOffset":28152,
"target":34962
},
{
"buffer":0,
- "byteLength":32,
- "byteOffset":1880,
+ "byteLength":216,
+ "byteOffset":28368,
+ "target":34962
+ },
+ {
+ "buffer":0,
+ "byteLength":144,
+ "byteOffset":28584,
"target":34962
},
{
"buffer":0,
"byteLength":48,
- "byteOffset":1912,
+ "byteOffset":28728,
+ "target":34963
+ },
+ {
+ "buffer":0,
+ "byteLength":2832,
+ "byteOffset":28776,
"target":34962
},
{
"buffer":0,
- "byteLength":48,
- "byteOffset":1960,
+ "byteLength":2832,
+ "byteOffset":31608,
"target":34962
},
{
"buffer":0,
- "byteLength":32,
- "byteOffset":2008,
+ "byteLength":1888,
+ "byteOffset":34440,
"target":34962
},
{
"buffer":0,
- "byteLength":120,
- "byteOffset":2040,
+ "byteLength":744,
+ "byteOffset":36328,
+ "target":34963
+ },
+ {
+ "buffer":0,
+ "byteLength":1932,
+ "byteOffset":37072,
"target":34962
},
{
"buffer":0,
- "byteLength":120,
- "byteOffset":2160,
+ "byteLength":1932,
+ "byteOffset":39004,
"target":34962
},
{
"buffer":0,
- "byteLength":80,
- "byteOffset":2280,
+ "byteLength":1288,
+ "byteOffset":40936,
"target":34962
},
{
"buffer":0,
- "byteLength":48,
- "byteOffset":2360,
+ "byteLength":504,
+ "byteOffset":42224,
+ "target":34963
+ },
+ {
+ "buffer":0,
+ "byteLength":1020,
+ "byteOffset":42728,
"target":34962
},
{
"buffer":0,
- "byteLength":48,
- "byteOffset":2408,
+ "byteLength":1020,
+ "byteOffset":43748,
"target":34962
},
{
"buffer":0,
- "byteLength":32,
- "byteOffset":2456,
+ "byteLength":680,
+ "byteOffset":44768,
"target":34962
},
{
"buffer":0,
- "byteLength":48,
- "byteOffset":2488,
+ "byteLength":264,
+ "byteOffset":45448,
+ "target":34963
+ },
+ {
+ "buffer":0,
+ "byteLength":288,
+ "byteOffset":45712,
"target":34962
},
{
"buffer":0,
- "byteLength":48,
- "byteOffset":2536,
+ "byteLength":288,
+ "byteOffset":46000,
"target":34962
},
{
"buffer":0,
- "byteLength":32,
- "byteOffset":2584,
+ "byteLength":192,
+ "byteOffset":46288,
"target":34962
},
{
"buffer":0,
- "byteLength":120,
- "byteOffset":2616,
+ "byteLength":288,
+ "byteOffset":46480,
"target":34962
},
{
"buffer":0,
- "byteLength":120,
- "byteOffset":2736,
+ "byteLength":288,
+ "byteOffset":46768,
"target":34962
},
{
"buffer":0,
- "byteLength":80,
- "byteOffset":2856,
+ "byteLength":192,
+ "byteOffset":47056,
"target":34962
},
{
"buffer":0,
- "byteLength":48,
- "byteOffset":2936,
+ "byteLength":288,
+ "byteOffset":47248,
"target":34962
},
{
"buffer":0,
- "byteLength":48,
- "byteOffset":2984,
+ "byteLength":288,
+ "byteOffset":47536,
"target":34962
},
{
"buffer":0,
- "byteLength":32,
- "byteOffset":3032,
+ "byteLength":192,
+ "byteOffset":47824,
"target":34962
},
{
"buffer":0,
- "byteLength":48,
- "byteOffset":3064,
+ "byteLength":288,
+ "byteOffset":48016,
"target":34962
},
{
"buffer":0,
- "byteLength":48,
- "byteOffset":3112,
+ "byteLength":288,
+ "byteOffset":48304,
"target":34962
},
{
"buffer":0,
- "byteLength":32,
- "byteOffset":3160,
+ "byteLength":192,
+ "byteOffset":48592,
"target":34962
},
{
"buffer":0,
- "byteLength":120,
- "byteOffset":3192,
+ "byteLength":288,
+ "byteOffset":48784,
"target":34962
},
{
"buffer":0,
- "byteLength":120,
- "byteOffset":3312,
+ "byteLength":288,
+ "byteOffset":49072,
"target":34962
},
{
"buffer":0,
- "byteLength":80,
- "byteOffset":3432,
+ "byteLength":192,
+ "byteOffset":49360,
"target":34962
},
{
"buffer":0,
- "byteLength":48,
- "byteOffset":3512,
+ "byteLength":288,
+ "byteOffset":49552,
"target":34962
},
{
"buffer":0,
- "byteLength":48,
- "byteOffset":3560,
+ "byteLength":288,
+ "byteOffset":49840,
"target":34962
},
{
"buffer":0,
- "byteLength":32,
- "byteOffset":3608,
+ "byteLength":192,
+ "byteOffset":50128,
"target":34962
},
{
"buffer":0,
- "byteLength":48,
- "byteOffset":3640,
+ "byteLength":288,
+ "byteOffset":50320,
"target":34962
},
{
"buffer":0,
- "byteLength":48,
- "byteOffset":3688,
+ "byteLength":288,
+ "byteOffset":50608,
"target":34962
},
{
"buffer":0,
- "byteLength":32,
- "byteOffset":3736,
+ "byteLength":192,
+ "byteOffset":50896,
"target":34962
},
{
"buffer":0,
- "byteLength":120,
- "byteOffset":3768,
+ "byteLength":288,
+ "byteOffset":51088,
"target":34962
},
{
"buffer":0,
- "byteLength":120,
- "byteOffset":3888,
+ "byteLength":288,
+ "byteOffset":51376,
"target":34962
},
{
"buffer":0,
- "byteLength":80,
- "byteOffset":4008,
+ "byteLength":192,
+ "byteOffset":51664,
"target":34962
},
{
"buffer":0,
- "byteLength":48,
- "byteOffset":4088,
+ "byteLength":288,
+ "byteOffset":51856,
"target":34962
},
{
"buffer":0,
- "byteLength":48,
- "byteOffset":4136,
+ "byteLength":288,
+ "byteOffset":52144,
"target":34962
},
{
"buffer":0,
- "byteLength":32,
- "byteOffset":4184,
+ "byteLength":192,
+ "byteOffset":52432,
"target":34962
},
{
"buffer":0,
- "byteLength":48,
- "byteOffset":4216,
+ "byteLength":288,
+ "byteOffset":52624,
"target":34962
},
{
"buffer":0,
- "byteLength":48,
- "byteOffset":4264,
+ "byteLength":288,
+ "byteOffset":52912,
"target":34962
},
{
"buffer":0,
- "byteLength":32,
- "byteOffset":4312,
+ "byteLength":192,
+ "byteOffset":53200,
"target":34962
+ },
+ {
+ "buffer":0,
+ "byteLength":288,
+ "byteOffset":53392,
+ "target":34962
+ },
+ {
+ "buffer":0,
+ "byteLength":288,
+ "byteOffset":53680,
+ "target":34962
+ },
+ {
+ "buffer":0,
+ "byteLength":192,
+ "byteOffset":53968,
+ "target":34962
+ },
+ {
+ "buffer":0,
+ "byteLength":288,
+ "byteOffset":54160,
+ "target":34962
+ },
+ {
+ "buffer":0,
+ "byteLength":288,
+ "byteOffset":54448,
+ "target":34962
+ },
+ {
+ "buffer":0,
+ "byteLength":192,
+ "byteOffset":54736,
+ "target":34962
+ },
+ {
+ "buffer":0,
+ "byteLength":288,
+ "byteOffset":54928,
+ "target":34962
+ },
+ {
+ "buffer":0,
+ "byteLength":288,
+ "byteOffset":55216,
+ "target":34962
+ },
+ {
+ "buffer":0,
+ "byteLength":192,
+ "byteOffset":55504,
+ "target":34962
+ },
+ {
+ "buffer":0,
+ "byteLength":288,
+ "byteOffset":55696,
+ "target":34962
+ },
+ {
+ "buffer":0,
+ "byteLength":288,
+ "byteOffset":55984,
+ "target":34962
+ },
+ {
+ "buffer":0,
+ "byteLength":192,
+ "byteOffset":56272,
+ "target":34962
+ },
+ {
+ "buffer":0,
+ "byteLength":288,
+ "byteOffset":56464,
+ "target":34962
+ },
+ {
+ "buffer":0,
+ "byteLength":288,
+ "byteOffset":56752,
+ "target":34962
+ },
+ {
+ "buffer":0,
+ "byteLength":192,
+ "byteOffset":57040,
+ "target":34962
+ },
+ {
+ "buffer":0,
+ "byteLength":4584,
+ "byteOffset":57232,
+ "target":34962
+ },
+ {
+ "buffer":0,
+ "byteLength":4584,
+ "byteOffset":61816,
+ "target":34962
+ },
+ {
+ "buffer":0,
+ "byteLength":3056,
+ "byteOffset":66400,
+ "target":34962
+ },
+ {
+ "buffer":0,
+ "byteLength":1080,
+ "byteOffset":69456,
+ "target":34963
+ },
+ {
+ "buffer":0,
+ "byteLength":1368,
+ "byteOffset":70536,
+ "target":34962
+ },
+ {
+ "buffer":0,
+ "byteLength":1368,
+ "byteOffset":71904,
+ "target":34962
+ },
+ {
+ "buffer":0,
+ "byteLength":912,
+ "byteOffset":73272,
+ "target":34962
+ },
+ {
+ "buffer":0,
+ "byteLength":384,
+ "byteOffset":74184,
+ "target":34963
+ },
+ {
+ "buffer":0,
+ "byteLength":864,
+ "byteOffset":74568,
+ "target":34962
+ },
+ {
+ "buffer":0,
+ "byteLength":864,
+ "byteOffset":75432,
+ "target":34962
+ },
+ {
+ "buffer":0,
+ "byteLength":576,
+ "byteOffset":76296,
+ "target":34962
+ },
+ {
+ "buffer":0,
+ "byteLength":264,
+ "byteOffset":76872,
+ "target":34963
+ },
+ {
+ "buffer":0,
+ "byteLength":288,
+ "byteOffset":77136,
+ "target":34962
+ },
+ {
+ "buffer":0,
+ "byteLength":288,
+ "byteOffset":77424,
+ "target":34962
+ },
+ {
+ "buffer":0,
+ "byteLength":192,
+ "byteOffset":77712,
+ "target":34962
+ },
+ {
+ "buffer":0,
+ "byteLength":72,
+ "byteOffset":77904,
+ "target":34963
+ },
+ {
+ "buffer":0,
+ "byteLength":984,
+ "byteOffset":77976,
+ "target":34962
+ },
+ {
+ "buffer":0,
+ "byteLength":984,
+ "byteOffset":78960,
+ "target":34962
+ },
+ {
+ "buffer":0,
+ "byteLength":656,
+ "byteOffset":79944,
+ "target":34962
+ },
+ {
+ "buffer":0,
+ "byteLength":264,
+ "byteOffset":80600,
+ "target":34963
+ },
+ {
+ "buffer":0,
+ "byteLength":288,
+ "byteOffset":80864,
+ "target":34962
+ },
+ {
+ "buffer":0,
+ "byteLength":288,
+ "byteOffset":81152,
+ "target":34962
+ },
+ {
+ "buffer":0,
+ "byteLength":192,
+ "byteOffset":81440,
+ "target":34962
+ },
+ {
+ "buffer":0,
+ "byteLength":72,
+ "byteOffset":81632,
+ "target":34963
+ },
+ {
+ "buffer":0,
+ "byteLength":912,
+ "byteOffset":81704,
+ "target":34962
+ },
+ {
+ "buffer":0,
+ "byteLength":912,
+ "byteOffset":82616,
+ "target":34962
+ },
+ {
+ "buffer":0,
+ "byteLength":608,
+ "byteOffset":83528,
+ "target":34962
+ },
+ {
+ "buffer":0,
+ "byteLength":264,
+ "byteOffset":84136,
+ "target":34963
+ },
+ {
+ "buffer":0,
+ "byteLength":288,
+ "byteOffset":84400,
+ "target":34962
+ },
+ {
+ "buffer":0,
+ "byteLength":288,
+ "byteOffset":84688,
+ "target":34962
+ },
+ {
+ "buffer":0,
+ "byteLength":192,
+ "byteOffset":84976,
+ "target":34962
+ },
+ {
+ "buffer":0,
+ "byteLength":912,
+ "byteOffset":85168,
+ "target":34962
+ },
+ {
+ "buffer":0,
+ "byteLength":912,
+ "byteOffset":86080,
+ "target":34962
+ },
+ {
+ "buffer":0,
+ "byteLength":608,
+ "byteOffset":86992,
+ "target":34962
+ },
+ {
+ "buffer":0,
+ "byteLength":5520,
+ "byteOffset":87600,
+ "target":34962
+ },
+ {
+ "buffer":0,
+ "byteLength":5520,
+ "byteOffset":93120,
+ "target":34962
+ },
+ {
+ "buffer":0,
+ "byteLength":3680,
+ "byteOffset":98640,
+ "target":34962
+ },
+ {
+ "buffer":0,
+ "byteLength":2304,
+ "byteOffset":102320,
+ "target":34963
+ },
+ {
+ "buffer":0,
+ "byteLength":4080,
+ "byteOffset":104624,
+ "target":34962
+ },
+ {
+ "buffer":0,
+ "byteLength":4080,
+ "byteOffset":108704,
+ "target":34962
+ },
+ {
+ "buffer":0,
+ "byteLength":2720,
+ "byteOffset":112784,
+ "target":34962
+ },
+ {
+ "buffer":0,
+ "byteLength":1656,
+ "byteOffset":115504,
+ "target":34963
+ },
+ {
+ "buffer":0,
+ "byteLength":2640,
+ "byteOffset":117160,
+ "target":34962
+ },
+ {
+ "buffer":0,
+ "byteLength":2640,
+ "byteOffset":119800,
+ "target":34962
+ },
+ {
+ "buffer":0,
+ "byteLength":1760,
+ "byteOffset":122440,
+ "target":34962
+ },
+ {
+ "buffer":0,
+ "byteLength":1008,
+ "byteOffset":124200,
+ "target":34963
+ },
+ {
+ "buffer":0,
+ "byteLength":2892,
+ "byteOffset":125208,
+ "target":34962
+ },
+ {
+ "buffer":0,
+ "byteLength":2892,
+ "byteOffset":128100,
+ "target":34962
+ },
+ {
+ "buffer":0,
+ "byteLength":1928,
+ "byteOffset":130992,
+ "target":34962
+ },
+ {
+ "buffer":0,
+ "byteLength":864,
+ "byteOffset":132920,
+ "target":34963
+ },
+ {
+ "buffer":0,
+ "byteLength":1224,
+ "byteOffset":133784,
+ "target":34962
+ },
+ {
+ "buffer":0,
+ "byteLength":1224,
+ "byteOffset":135008,
+ "target":34962
+ },
+ {
+ "buffer":0,
+ "byteLength":816,
+ "byteOffset":136232,
+ "target":34962
+ },
+ {
+ "buffer":0,
+ "byteLength":336,
+ "byteOffset":137048,
+ "target":34963
+ },
+ {
+ "buffer":0,
+ "byteLength":288,
+ "byteOffset":137384,
+ "target":34962
+ },
+ {
+ "buffer":0,
+ "byteLength":288,
+ "byteOffset":137672,
+ "target":34962
+ },
+ {
+ "buffer":0,
+ "byteLength":192,
+ "byteOffset":137960,
+ "target":34962
+ },
+ {
+ "buffer":0,
+ "byteLength":2040,
+ "byteOffset":138152,
+ "target":34962
+ },
+ {
+ "buffer":0,
+ "byteLength":2040,
+ "byteOffset":140192,
+ "target":34962
+ },
+ {
+ "buffer":0,
+ "byteLength":1360,
+ "byteOffset":142232,
+ "target":34962
+ },
+ {
+ "buffer":0,
+ "byteLength":696,
+ "byteOffset":143592,
+ "target":34963
+ },
+ {
+ "buffer":0,
+ "byteLength":288,
+ "byteOffset":144288,
+ "target":34962
+ },
+ {
+ "buffer":0,
+ "byteLength":288,
+ "byteOffset":144576,
+ "target":34962
+ },
+ {
+ "buffer":0,
+ "byteLength":192,
+ "byteOffset":144864,
+ "target":34962
+ },
+ {
+ "buffer":0,
+ "byteLength":288,
+ "byteOffset":145056,
+ "target":34962
+ },
+ {
+ "buffer":0,
+ "byteLength":288,
+ "byteOffset":145344,
+ "target":34962
+ },
+ {
+ "buffer":0,
+ "byteLength":192,
+ "byteOffset":145632,
+ "target":34962
+ },
+ {
+ "buffer":0,
+ "byteLength":72,
+ "byteOffset":145824,
+ "target":34963
+ },
+ {
+ "buffer":0,
+ "byteLength":2040,
+ "byteOffset":145896,
+ "target":34962
+ },
+ {
+ "buffer":0,
+ "byteLength":2040,
+ "byteOffset":147936,
+ "target":34962
+ },
+ {
+ "buffer":0,
+ "byteLength":1360,
+ "byteOffset":149976,
+ "target":34962
+ },
+ {
+ "buffer":0,
+ "byteLength":864,
+ "byteOffset":151336,
+ "target":34962
+ },
+ {
+ "buffer":0,
+ "byteLength":864,
+ "byteOffset":152200,
+ "target":34962
+ },
+ {
+ "buffer":0,
+ "byteLength":576,
+ "byteOffset":153064,
+ "target":34962
+ },
+ {
+ "buffer":0,
+ "byteLength":264,
+ "byteOffset":153640,
+ "target":34963
+ },
+ {
+ "buffer":0,
+ "byteLength":2040,
+ "byteOffset":153904,
+ "target":34962
+ },
+ {
+ "buffer":0,
+ "byteLength":2040,
+ "byteOffset":155944,
+ "target":34962
+ },
+ {
+ "buffer":0,
+ "byteLength":1360,
+ "byteOffset":157984,
+ "target":34962
+ },
+ {
+ "buffer":0,
+ "byteLength":288,
+ "byteOffset":159344,
+ "target":34962
+ },
+ {
+ "buffer":0,
+ "byteLength":288,
+ "byteOffset":159632,
+ "target":34962
+ },
+ {
+ "buffer":0,
+ "byteLength":192,
+ "byteOffset":159920,
+ "target":34962
+ },
+ {
+ "buffer":0,
+ "byteLength":72,
+ "byteOffset":160112,
+ "target":34963
+ },
+ {
+ "buffer":0,
+ "byteLength":288,
+ "byteOffset":160184,
+ "target":34962
+ },
+ {
+ "buffer":0,
+ "byteLength":288,
+ "byteOffset":160472,
+ "target":34962
+ },
+ {
+ "buffer":0,
+ "byteLength":192,
+ "byteOffset":160760,
+ "target":34962
+ },
+ {
+ "buffer":0,
+ "byteLength":72,
+ "byteOffset":160952,
+ "target":34963
+ },
+ {
+ "buffer":0,
+ "byteLength":624,
+ "byteOffset":161024,
+ "target":34962
+ },
+ {
+ "buffer":0,
+ "byteLength":624,
+ "byteOffset":161648,
+ "target":34962
+ },
+ {
+ "buffer":0,
+ "byteLength":416,
+ "byteOffset":162272,
+ "target":34962
+ },
+ {
+ "buffer":0,
+ "byteLength":168,
+ "byteOffset":162688,
+ "target":34963
+ },
+ {
+ "buffer":0,
+ "byteLength":6072,
+ "byteOffset":162856,
+ "target":34962
+ },
+ {
+ "buffer":0,
+ "byteLength":6072,
+ "byteOffset":168928,
+ "target":34962
+ },
+ {
+ "buffer":0,
+ "byteLength":4048,
+ "byteOffset":175000,
+ "target":34962
+ },
+ {
+ "buffer":0,
+ "byteLength":2016,
+ "byteOffset":179048,
+ "target":34963
+ },
+ {
+ "buffer":0,
+ "byteLength":8544,
+ "byteOffset":181064,
+ "target":34962
+ },
+ {
+ "buffer":0,
+ "byteLength":8544,
+ "byteOffset":189608,
+ "target":34962
+ },
+ {
+ "buffer":0,
+ "byteLength":5696,
+ "byteOffset":198152,
+ "target":34962
+ },
+ {
+ "buffer":0,
+ "byteLength":2928,
+ "byteOffset":203848,
+ "target":34963
+ },
+ {
+ "buffer":0,
+ "byteLength":288,
+ "byteOffset":206776,
+ "target":34962
+ },
+ {
+ "buffer":0,
+ "byteLength":288,
+ "byteOffset":207064,
+ "target":34962
+ },
+ {
+ "buffer":0,
+ "byteLength":192,
+ "byteOffset":207352,
+ "target":34962
+ },
+ {
+ "buffer":0,
+ "byteLength":72,
+ "byteOffset":207544,
+ "target":34963
+ },
+ {
+ "buffer":0,
+ "byteLength":576,
+ "byteOffset":207616,
+ "target":34962
+ },
+ {
+ "buffer":0,
+ "byteLength":576,
+ "byteOffset":208192,
+ "target":34962
+ },
+ {
+ "buffer":0,
+ "byteLength":384,
+ "byteOffset":208768,
+ "target":34962
+ },
+ {
+ "buffer":0,
+ "byteLength":168,
+ "byteOffset":209152,
+ "target":34963
+ },
+ {
+ "buffer":0,
+ "byteLength":624,
+ "byteOffset":209320,
+ "target":34962
+ },
+ {
+ "buffer":0,
+ "byteLength":624,
+ "byteOffset":209944,
+ "target":34962
+ },
+ {
+ "buffer":0,
+ "byteLength":416,
+ "byteOffset":210568,
+ "target":34962
+ },
+ {
+ "buffer":0,
+ "byteLength":168,
+ "byteOffset":210984,
+ "target":34963
+ },
+ {
+ "buffer":0,
+ "byteLength":1224,
+ "byteOffset":211152,
+ "target":34962
+ },
+ {
+ "buffer":0,
+ "byteLength":1224,
+ "byteOffset":212376,
+ "target":34962
+ },
+ {
+ "buffer":0,
+ "byteLength":816,
+ "byteOffset":213600,
+ "target":34962
+ },
+ {
+ "buffer":0,
+ "byteLength":336,
+ "byteOffset":214416,
+ "target":34963
+ },
+ {
+ "buffer":0,
+ "byteLength":1128,
+ "byteOffset":214752,
+ "target":34962
+ },
+ {
+ "buffer":0,
+ "byteLength":1128,
+ "byteOffset":215880,
+ "target":34962
+ },
+ {
+ "buffer":0,
+ "byteLength":752,
+ "byteOffset":217008,
+ "target":34962
+ },
+ {
+ "buffer":0,
+ "byteLength":336,
+ "byteOffset":217760,
+ "target":34963
}
],
"samplers":[
@@ -1311,7 +6611,7 @@
],
"buffers":[
{
- "byteLength":4344,
+ "byteLength":218096,
"uri":"test_map.bin"
}
]
diff --git a/build.rs b/build.rs
new file mode 100644
index 0000000..6700d6f
--- /dev/null
+++ b/build.rs
@@ -0,0 +1,10 @@
+extern crate embed_resource;
+use std::env;
+
+fn main() {
+ let target = env::var("TARGET").unwrap();
+ if target.contains("windows") {
+ // on windows we will set our game icon as icon for the executable
+ embed_resource::compile("build/windows/icon.rc");
+ }
+}
diff --git a/build/android/res/mipmap-mdpi/icon.png b/build/android/res/mipmap-mdpi/icon.png
new file mode 100644
index 0000000..63a5cd3
Binary files /dev/null and b/build/android/res/mipmap-mdpi/icon.png differ
diff --git a/build/icon_1024x1024.png b/build/icon_1024x1024.png
new file mode 100644
index 0000000..e1a7be5
Binary files /dev/null and b/build/icon_1024x1024.png differ
diff --git a/build/macos/AppIcon.iconset/icon_128x128.png b/build/macos/AppIcon.iconset/icon_128x128.png
new file mode 100644
index 0000000..a31ad87
Binary files /dev/null and b/build/macos/AppIcon.iconset/icon_128x128.png differ
diff --git a/build/macos/AppIcon.iconset/icon_128x128@2x.png b/build/macos/AppIcon.iconset/icon_128x128@2x.png
new file mode 100644
index 0000000..8c780b8
Binary files /dev/null and b/build/macos/AppIcon.iconset/icon_128x128@2x.png differ
diff --git a/build/macos/AppIcon.iconset/icon_16x16.png b/build/macos/AppIcon.iconset/icon_16x16.png
new file mode 100644
index 0000000..20e53e8
Binary files /dev/null and b/build/macos/AppIcon.iconset/icon_16x16.png differ
diff --git a/build/macos/AppIcon.iconset/icon_16x16@2x.png b/build/macos/AppIcon.iconset/icon_16x16@2x.png
new file mode 100644
index 0000000..c4f2b8f
Binary files /dev/null and b/build/macos/AppIcon.iconset/icon_16x16@2x.png differ
diff --git a/build/macos/AppIcon.iconset/icon_256x256.png b/build/macos/AppIcon.iconset/icon_256x256.png
new file mode 100644
index 0000000..8c780b8
Binary files /dev/null and b/build/macos/AppIcon.iconset/icon_256x256.png differ
diff --git a/build/macos/AppIcon.iconset/icon_256x256@2x.png b/build/macos/AppIcon.iconset/icon_256x256@2x.png
new file mode 100644
index 0000000..a16a1aa
Binary files /dev/null and b/build/macos/AppIcon.iconset/icon_256x256@2x.png differ
diff --git a/build/macos/AppIcon.iconset/icon_32x32.png b/build/macos/AppIcon.iconset/icon_32x32.png
new file mode 100644
index 0000000..c4f2b8f
Binary files /dev/null and b/build/macos/AppIcon.iconset/icon_32x32.png differ
diff --git a/build/macos/AppIcon.iconset/icon_32x32@2x.png b/build/macos/AppIcon.iconset/icon_32x32@2x.png
new file mode 100644
index 0000000..250577f
Binary files /dev/null and b/build/macos/AppIcon.iconset/icon_32x32@2x.png differ
diff --git a/build/macos/AppIcon.iconset/icon_512x512.png b/build/macos/AppIcon.iconset/icon_512x512.png
new file mode 100644
index 0000000..a16a1aa
Binary files /dev/null and b/build/macos/AppIcon.iconset/icon_512x512.png differ
diff --git a/build/macos/AppIcon.iconset/icon_512x512@2x.png b/build/macos/AppIcon.iconset/icon_512x512@2x.png
new file mode 100644
index 0000000..e1a7be5
Binary files /dev/null and b/build/macos/AppIcon.iconset/icon_512x512@2x.png differ
diff --git a/build/macos/create_icns.sh b/build/macos/create_icns.sh
new file mode 100755
index 0000000..f71ed47
--- /dev/null
+++ b/build/macos/create_icns.sh
@@ -0,0 +1,17 @@
+#!/usr/bin/env sh
+
+rm -rf AppIcon.iconset/*
+mkdir -p AppIcon.iconset
+sips -z 16 16 ../icon_1024x1024.png --out AppIcon.iconset/icon_16x16.png
+sips -z 32 32 ../icon_1024x1024.png --out AppIcon.iconset/icon_16x16@2x.png
+sips -z 32 32 ../icon_1024x1024.png --out AppIcon.iconset/icon_32x32.png
+sips -z 64 64 ../icon_1024x1024.png --out AppIcon.iconset/icon_32x32@2x.png
+sips -z 128 128 ../icon_1024x1024.png --out AppIcon.iconset/icon_128x128.png
+sips -z 256 256 ../icon_1024x1024.png --out AppIcon.iconset/icon_128x128@2x.png
+sips -z 256 256 ../icon_1024x1024.png --out AppIcon.iconset/icon_256x256.png
+sips -z 512 512 ../icon_1024x1024.png --out AppIcon.iconset/icon_256x256@2x.png
+sips -z 512 512 ../icon_1024x1024.png --out AppIcon.iconset/icon_512x512.png
+cp ../icon_1024x1024.png AppIcon.iconset/icon_512x512@2x.png
+iconutil -c icns AppIcon.iconset
+mkdir -p src/Game.app/Contents/Resources
+mv AppIcon.icns src/Game.app/Contents/Resources/
diff --git a/build/macos/create_icns_linux.sh b/build/macos/create_icns_linux.sh
new file mode 100755
index 0000000..d538ef0
--- /dev/null
+++ b/build/macos/create_icns_linux.sh
@@ -0,0 +1,17 @@
+#!/usr/bin/env sh
+
+rm -rf AppIcon.iconset/*
+mkdir -p AppIcon.iconset
+convert ../icon_1024x1024.png -resize 16x16 AppIcon.iconset/icon_16x16.png
+convert ../icon_1024x1024.png -resize 32x32 AppIcon.iconset/icon_16x16@2x.png
+convert ../icon_1024x1024.png -resize 32x32 AppIcon.iconset/icon_32x32.png
+convert ../icon_1024x1024.png -resize 64x64 AppIcon.iconset/icon_32x32@2x.png
+convert ../icon_1024x1024.png -resize 128x128 AppIcon.iconset/icon_128x128.png
+convert ../icon_1024x1024.png -resize 256x256 AppIcon.iconset/icon_128x128@2x.png
+convert ../icon_1024x1024.png -resize 256x256 AppIcon.iconset/icon_256x256.png
+convert ../icon_1024x1024.png -resize 512x512 AppIcon.iconset/icon_256x256@2x.png
+convert ../icon_1024x1024.png -resize 512x512 AppIcon.iconset/icon_512x512.png
+cp ../icon_1024x1024.png AppIcon.iconset/icon_512x512@2x.png
+png2icns ./AppIcon.icns AppIcon.iconset/icon_16x16.png AppIcon.iconset/icon_32x32.png AppIcon.iconset/icon_128x128.png AppIcon.iconset/icon_256x256.png AppIcon.iconset/icon_512x512.png
+mkdir -p src/Game.app/Contents/Resources
+mv AppIcon.icns src/Game.app/Contents/Resources/
diff --git a/build/web/sound.js b/build/web/sound.js
new file mode 100644
index 0000000..b2ab677
--- /dev/null
+++ b/build/web/sound.js
@@ -0,0 +1,62 @@
+// Insert hack to make sound autoplay on Chrome as soon as the user interacts with the tab:
+// https://developers.google.com/web/updates/2018/11/web-audio-autoplay#moving-forward
+
+// the following function keeps track of all AudioContexts and resumes them on the first user
+// interaction with the page. If the function is called and all contexts are already running,
+// it will remove itself from all event listeners.
+(function () {
+ // An array of all contexts to resume on the page
+ const audioContextList = [];
+
+ // An array of various user interaction events we should listen for
+ const userInputEventNames = [
+ "click",
+ "contextmenu",
+ "auxclick",
+ "dblclick",
+ "mousedown",
+ "mouseup",
+ "pointerup",
+ "touchend",
+ "keydown",
+ "keyup",
+ ];
+
+ // A proxy object to intercept AudioContexts and
+ // add them to the array for tracking and resuming later
+ self.AudioContext = new Proxy(self.AudioContext, {
+ construct(target, args) {
+ const result = new target(...args);
+ audioContextList.push(result);
+ return result;
+ },
+ });
+
+ // To resume all AudioContexts being tracked
+ function resumeAllContexts(_event) {
+ let count = 0;
+
+ audioContextList.forEach((context) => {
+ if (context.state !== "running") {
+ context.resume();
+ } else {
+ count++;
+ }
+ });
+
+ // If all the AudioContexts have now resumed then we unbind all
+ // the event listeners from the page to prevent unnecessary resume attempts
+ // Checking count > 0 ensures that the user interaction happens AFTER the game started up
+ if (count > 0 && count === audioContextList.length) {
+ userInputEventNames.forEach((eventName) => {
+ document.removeEventListener(eventName, resumeAllContexts);
+ });
+ }
+ }
+
+ // We bind the resume function for each user interaction
+ // event on the page
+ userInputEventNames.forEach((eventName) => {
+ document.addEventListener(eventName, resumeAllContexts);
+ });
+})();
diff --git a/build/web/styles.css b/build/web/styles.css
new file mode 100644
index 0000000..b0a0359
--- /dev/null
+++ b/build/web/styles.css
@@ -0,0 +1,53 @@
+body, html {
+ height: 100%;
+}
+
+body {
+ background-color: lightgray;
+ margin: 0;
+ display: flex;
+ justify-content: center;
+ align-items: center;
+}
+
+.game-container {
+ width: 800px;
+ height: 600px;
+ display: flex;
+ justify-content: center;
+ align-items: center;
+}
+
+.lds-dual-ring {
+ display: inline-block;
+ position: absolute;
+ left: 0;
+ right: 0;
+ margin: auto;
+ width: 80px;
+ height: 80px;
+}
+
+.lds-dual-ring:after {
+ content: " ";
+ display: block;
+ width: 64px;
+ height: 64px;
+ border-radius: 50%;
+ border: 6px solid #fff;
+ border-color: #fff transparent #fff transparent;
+ animation: lds-dual-ring 1.2s linear infinite;
+}
+
+@keyframes lds-dual-ring {
+ 0% {
+ transform: rotate(0deg);
+ }
+ 100% {
+ transform: rotate(360deg);
+ }
+}
+
+#bevy {
+ z-index: 2;
+}
diff --git a/build/windows/icon.ico b/build/windows/icon.ico
new file mode 100644
index 0000000..8c7afbf
Binary files /dev/null and b/build/windows/icon.ico differ
diff --git a/build/windows/icon.rc b/build/windows/icon.rc
new file mode 100644
index 0000000..61c0aef
--- /dev/null
+++ b/build/windows/icon.rc
@@ -0,0 +1 @@
+app_icon ICON "icon.ico"
diff --git a/build/windows/installer/.gitignore b/build/windows/installer/.gitignore
new file mode 100644
index 0000000..4ded7c4
--- /dev/null
+++ b/build/windows/installer/.gitignore
@@ -0,0 +1,2 @@
+/bin/
+/obj/
diff --git a/build/windows/installer/InstallDirUi.wxs b/build/windows/installer/InstallDirUi.wxs
new file mode 100644
index 0000000..4815975
--- /dev/null
+++ b/build/windows/installer/InstallDirUi.wxs
@@ -0,0 +1,60 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/build/windows/installer/Installer.sln b/build/windows/installer/Installer.sln
new file mode 100644
index 0000000..a79b034
--- /dev/null
+++ b/build/windows/installer/Installer.sln
@@ -0,0 +1,40 @@
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio Version 17
+VisualStudioVersion = 17.0.31903.59
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{B7DD6F7E-DEF8-4E67-B5B7-07EF123DB6F0}") = "Installer", "Installer.wixproj", "{340293B0-F46C-46A0-88D8-4BB2F3465C53}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|Any CPU = Debug|Any CPU
+ Debug|ARM64 = Debug|ARM64
+ Debug|x64 = Debug|x64
+ Debug|x86 = Debug|x86
+ Release|Any CPU = Release|Any CPU
+ Release|ARM64 = Release|ARM64
+ Release|x64 = Release|x64
+ Release|x86 = Release|x86
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {340293B0-F46C-46A0-88D8-4BB2F3465C53}.Debug|Any CPU.ActiveCfg = Debug|x64
+ {340293B0-F46C-46A0-88D8-4BB2F3465C53}.Debug|Any CPU.Build.0 = Debug|x64
+ {340293B0-F46C-46A0-88D8-4BB2F3465C53}.Debug|ARM64.ActiveCfg = Debug|ARM64
+ {340293B0-F46C-46A0-88D8-4BB2F3465C53}.Debug|ARM64.Build.0 = Debug|ARM64
+ {340293B0-F46C-46A0-88D8-4BB2F3465C53}.Debug|x64.ActiveCfg = Debug|x64
+ {340293B0-F46C-46A0-88D8-4BB2F3465C53}.Debug|x64.Build.0 = Debug|x64
+ {340293B0-F46C-46A0-88D8-4BB2F3465C53}.Debug|x86.ActiveCfg = Debug|x86
+ {340293B0-F46C-46A0-88D8-4BB2F3465C53}.Debug|x86.Build.0 = Debug|x86
+ {340293B0-F46C-46A0-88D8-4BB2F3465C53}.Release|Any CPU.ActiveCfg = Release|x64
+ {340293B0-F46C-46A0-88D8-4BB2F3465C53}.Release|Any CPU.Build.0 = Release|x64
+ {340293B0-F46C-46A0-88D8-4BB2F3465C53}.Release|ARM64.ActiveCfg = Release|ARM64
+ {340293B0-F46C-46A0-88D8-4BB2F3465C53}.Release|ARM64.Build.0 = Release|ARM64
+ {340293B0-F46C-46A0-88D8-4BB2F3465C53}.Release|x64.ActiveCfg = Release|x64
+ {340293B0-F46C-46A0-88D8-4BB2F3465C53}.Release|x64.Build.0 = Release|x64
+ {340293B0-F46C-46A0-88D8-4BB2F3465C53}.Release|x86.ActiveCfg = Release|x86
+ {340293B0-F46C-46A0-88D8-4BB2F3465C53}.Release|x86.Build.0 = Release|x86
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+EndGlobal
diff --git a/build/windows/installer/Installer.wixproj b/build/windows/installer/Installer.wixproj
new file mode 100644
index 0000000..4c3ca90
--- /dev/null
+++ b/build/windows/installer/Installer.wixproj
@@ -0,0 +1,29 @@
+
+
+
+ none
+ installer
+
+
+
+
+
+
+
+
+ AssetsDirectory
+ INSTALLFOLDER
+ false
+
+
+
+
+
+
+ CreditsDirectory
+ INSTALLFOLDER
+ false
+
+
+
+
diff --git a/build/windows/installer/Package.en-us.wxl b/build/windows/installer/Package.en-us.wxl
new file mode 100644
index 0000000..83e657b
--- /dev/null
+++ b/build/windows/installer/Package.en-us.wxl
@@ -0,0 +1,6 @@
+
+
+
+
diff --git a/build/windows/installer/Package.wxs b/build/windows/installer/Package.wxs
new file mode 100644
index 0000000..4960c88
--- /dev/null
+++ b/build/windows/installer/Package.wxs
@@ -0,0 +1,51 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/build/windows/installer/global.json b/build/windows/installer/global.json
new file mode 100644
index 0000000..9f70a2c
--- /dev/null
+++ b/build/windows/installer/global.json
@@ -0,0 +1,6 @@
+{
+ "sdk": {
+ "version": "7.0.102",
+ "rollForward": "latestFeature"
+ }
+}
diff --git a/credits/CREDITS.md b/credits/CREDITS.md
new file mode 100644
index 0000000..9c46c68
--- /dev/null
+++ b/credits/CREDITS.md
@@ -0,0 +1,5 @@
+# Credits
+
+## Assets
+
+* Bevy icon: [MIT License](licenses/Bevy_MIT_License.md);
diff --git a/credits/licenses/Bevy_MIT_License.md b/credits/licenses/Bevy_MIT_License.md
new file mode 100644
index 0000000..9cf1062
--- /dev/null
+++ b/credits/licenses/Bevy_MIT_License.md
@@ -0,0 +1,19 @@
+MIT License
+
+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/index.html b/index.html
new file mode 100644
index 0000000..e8d5faf
--- /dev/null
+++ b/index.html
@@ -0,0 +1,22 @@
+
+
+
+
+
+ TTT:CE
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/mobile/.cargo/config.toml b/mobile/.cargo/config.toml
new file mode 100644
index 0000000..19a6340
--- /dev/null
+++ b/mobile/.cargo/config.toml
@@ -0,0 +1,5 @@
+# Flag to notify the compiler we're building for the iOS simulator from an Apple silicon mac
+# This needs some workarounds for now
+# See https://github.com/bevyengine/bevy/pull/10178 - remove if it's not needed anymore.
+[target.aarch64-apple-ios-sim]
+rustflags = ["--cfg=ios_simulator"]
diff --git a/mobile/.gitignore b/mobile/.gitignore
new file mode 100644
index 0000000..b446ed7
--- /dev/null
+++ b/mobile/.gitignore
@@ -0,0 +1,3 @@
+mobile.xcodeproj/xcuserdata/
+mobile.xcodeproj/project.xcworkspace/
+build/
diff --git a/mobile/Cargo.toml b/mobile/Cargo.toml
new file mode 100644
index 0000000..504c51f
--- /dev/null
+++ b/mobile/Cargo.toml
@@ -0,0 +1,34 @@
+[package]
+name = "mobile"
+version = "0.1.0"
+edition = "2021"
+publish = false
+
+[lib]
+name = "mobile"
+crate-type = ["staticlib", "cdylib"]
+
+[dependencies]
+ttt-ce = { path = ".." } # ToDo
+bevy = { version = "0.13", default-features = false }
+
+# As long as Kira doesn't expose a feature for this, we need to enable it
+# See https://github.com/tesselode/kira/pull/51
+[target."cfg(target_os = \"android\")".dependencies.cpal]
+version = "0.15"
+features = ["oboe-shared-stdcxx"]
+
+[package.metadata.android]
+package = "me.nikl.bevygame" # ToDo
+apk_name = "BevyGame" # ToDo same as GAME_OSX_APP_NAME in release workflow
+assets = "../assets"
+strip = "strip"
+resources = "../build/android/res"
+build_targets = ["aarch64-linux-android"]
+
+[package.metadata.android.sdk]
+target_sdk_version = 33
+
+[package.metadata.android.application]
+icon = "@mipmap/icon"
+label = "Bevy Game" # ToDo
diff --git a/mobile/Makefile b/mobile/Makefile
new file mode 100644
index 0000000..4fb6908
--- /dev/null
+++ b/mobile/Makefile
@@ -0,0 +1,29 @@
+.PHONY: xcodebuild run install boot-sim generate clean
+
+DEVICE = ${DEVICE_ID}
+ifndef DEVICE_ID
+ DEVICE=$(shell xcrun simctl list devices 'iOS' | grep -v 'unavailable' | grep -v '^--' | grep -v '==' | head -n 1 | grep -E -o -i "([0-9a-f]{8}-([0-9a-f]{4}-){3}[0-9a-f]{12})")
+endif
+
+run: install
+ # Todo: change the bundle identifier (then remove this comment :P)
+ xcrun simctl launch --console $(DEVICE) me.nikl.bevygame
+
+boot-sim:
+ xcrun simctl boot $(DEVICE) || true
+
+install: xcodebuild-simulator boot-sim
+ xcrun simctl install $(DEVICE) build/Build/Products/Debug-iphonesimulator/mobile.app
+
+xcodebuild-simulator:
+ IOS_TARGETS=x86_64-apple-ios xcodebuild -scheme mobile -configuration Debug -derivedDataPath build -destination "id=$(DEVICE)"
+
+xcodebuild-iphone:
+ IOS_TARGETS=aarch64-apple-ios xcodebuild -scheme mobile -configuration Debug -derivedDataPath build -arch arm64
+
+xcodebuild-iphone-release:
+ IOS_TARGETS=aarch64-apple-ios xcodebuild -scheme mobile -configuration Release -derivedDataPath build -arch arm64
+
+clean:
+ rm -r build
+ cargo clean
diff --git a/mobile/build_rust_deps.sh b/mobile/build_rust_deps.sh
new file mode 100644
index 0000000..af8e0a7
--- /dev/null
+++ b/mobile/build_rust_deps.sh
@@ -0,0 +1,55 @@
+#!/usr/bin/env bash
+
+# based on https://github.com/mozilla/glean/blob/main/build-scripts/xc-universal-binary.sh
+
+set -eux
+
+PATH=$PATH:$HOME/.cargo/bin
+
+RELFLAG=
+if [[ "$CONFIGURATION" != "Debug" ]]; then
+ RELFLAG="--profile dist"
+fi
+
+set -euvx
+
+if [[ -n "${DEVELOPER_SDK_DIR:-}" ]]; then
+ # Assume we're in Xcode, which means we're probably cross-compiling.
+ # In this case, we need to add an extra library search path for build scripts and proc-macros,
+ # which run on the host instead of the target.
+ # (macOS Big Sur does not have linkable libraries in /usr/lib/.)
+ export LIBRARY_PATH="${DEVELOPER_SDK_DIR}/MacOSX.sdk/usr/lib:${LIBRARY_PATH:-}"
+fi
+
+# add homebrew bin path, as it's the most commonly used package manager on macOS
+# this is needed for cmake on apple arm processors as it's not available by default
+export PATH="$PATH:/opt/homebrew/bin"
+
+IS_SIMULATOR=0
+if [ "${LLVM_TARGET_TRIPLE_SUFFIX-}" = "-simulator" ]; then
+ IS_SIMULATOR=1
+fi
+
+for arch in $ARCHS; do
+ case "$arch" in
+ x86_64)
+ if [ $IS_SIMULATOR -eq 0 ]; then
+ echo "Building for x86_64, but not a simulator build. What's going on?" >&2
+ exit 2
+ fi
+
+ # Intel iOS simulator
+ export CFLAGS_x86_64_apple_ios="-target x86_64-apple-ios"
+ cargo rustc --crate-type staticlib --lib $RELFLAG --target x86_64-apple-ios
+ ;;
+
+ arm64)
+ if [ $IS_SIMULATOR -eq 0 ]; then
+ # Hardware iOS targets
+ cargo rustc --crate-type staticlib --lib $RELFLAG --target aarch64-apple-ios
+ else
+ # M1 iOS simulator -- currently in Nightly only and requires to build `libstd`
+ cargo rustc --crate-type staticlib --lib $RELFLAG --target aarch64-apple-ios-sim
+ fi
+ esac
+done
diff --git a/mobile/ios-src/Assets.xcassets/AppIcon.appiconset/Contents.json b/mobile/ios-src/Assets.xcassets/AppIcon.appiconset/Contents.json
new file mode 100644
index 0000000..5a60908
--- /dev/null
+++ b/mobile/ios-src/Assets.xcassets/AppIcon.appiconset/Contents.json
@@ -0,0 +1,14 @@
+{
+ "images" : [
+ {
+ "filename" : "icon_1024x1024.png",
+ "idiom" : "universal",
+ "platform" : "ios",
+ "size" : "1024x1024"
+ }
+ ],
+ "info" : {
+ "author" : "xcode",
+ "version" : 1
+ }
+}
diff --git a/mobile/ios-src/Assets.xcassets/AppIcon.appiconset/icon_1024x1024.png b/mobile/ios-src/Assets.xcassets/AppIcon.appiconset/icon_1024x1024.png
new file mode 100644
index 0000000..a79c37d
Binary files /dev/null and b/mobile/ios-src/Assets.xcassets/AppIcon.appiconset/icon_1024x1024.png differ
diff --git a/mobile/ios-src/Assets.xcassets/Contents.json b/mobile/ios-src/Assets.xcassets/Contents.json
new file mode 100644
index 0000000..73c0059
--- /dev/null
+++ b/mobile/ios-src/Assets.xcassets/Contents.json
@@ -0,0 +1,6 @@
+{
+ "info" : {
+ "author" : "xcode",
+ "version" : 1
+ }
+}
diff --git a/mobile/ios-src/Info.plist b/mobile/ios-src/Info.plist
new file mode 100644
index 0000000..f815a6b
--- /dev/null
+++ b/mobile/ios-src/Info.plist
@@ -0,0 +1,35 @@
+
+
+
+
+ CFBundleDevelopmentRegion
+ $(DEVELOPMENT_LANGUAGE)
+ CFBundleExecutable
+ $(EXECUTABLE_NAME)
+ CFBundleIdentifier
+ $(PRODUCT_BUNDLE_IDENTIFIER)
+ CFBundleInfoDictionaryVersion
+ 6.0
+ CFBundleName
+ $(PRODUCT_NAME)
+ CFBundlePackageType
+ APPL
+ CFBundleShortVersionString
+ 0.1.1
+ CFBundleIconName
+ AppIcon
+ CFBundleVersion
+ 0.1.1
+ UILaunchStoryboardName
+ LaunchScreen
+ UIRequiresFullScreen
+
+ UISupportedInterfaceOrientations
+
+ UIInterfaceOrientationPortrait
+ UIInterfaceOrientationLandscapeLeft
+ UIInterfaceOrientationLandscapeRight
+ UIInterfaceOrientationPortraitUpsideDown
+
+
+
diff --git a/mobile/ios-src/LaunchScreen.storyboard b/mobile/ios-src/LaunchScreen.storyboard
new file mode 100644
index 0000000..324de1d
--- /dev/null
+++ b/mobile/ios-src/LaunchScreen.storyboard
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/mobile/ios-src/bindings.h b/mobile/ios-src/bindings.h
new file mode 100644
index 0000000..a705f03
--- /dev/null
+++ b/mobile/ios-src/bindings.h
@@ -0,0 +1 @@
+void main_rs(void);
diff --git a/mobile/ios-src/main.m b/mobile/ios-src/main.m
new file mode 100644
index 0000000..7d152fb
--- /dev/null
+++ b/mobile/ios-src/main.m
@@ -0,0 +1,6 @@
+#import "bindings.h"
+
+int main() {
+ main_rs();
+ return 0;
+}
diff --git a/mobile/manifest.yaml b/mobile/manifest.yaml
new file mode 100644
index 0000000..af084cc
--- /dev/null
+++ b/mobile/manifest.yaml
@@ -0,0 +1,11 @@
+android:
+ gradle: true
+ # this assets configuration is currently only used without gradle!
+ #assets:
+ # - "../assets/*"
+ icon: "ios-src/Assets.xcassets/AppIcon.appiconset/icon_1024x1024.png"
+ manifest:
+ package: "com.opencodebox.tttce" # Todo
+ version_code: 3 # Todo you should start at 1
+ application:
+ label: "Trouble in Terror Town: Community Edition" # Todo
diff --git a/mobile/mobile.xcodeproj/project.pbxproj b/mobile/mobile.xcodeproj/project.pbxproj
new file mode 100644
index 0000000..69c019c
--- /dev/null
+++ b/mobile/mobile.xcodeproj/project.pbxproj
@@ -0,0 +1,465 @@
+// !$*UTF8*$!
+{
+ archiveVersion = 1;
+ classes = {
+ };
+ objectVersion = 51;
+ objects = {
+
+/* Begin PBXBuildFile section */
+ 134866208A035F8615C99114 /* Metal.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 96A1E5B62F48B379829E8A0D /* Metal.framework */; };
+ 2469A4292A6F9AC200ACF4EF /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 2469A4282A6F9AC200ACF4EF /* Assets.xcassets */; };
+ 2469A42B2A6FAC7000ACF4EF /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 2469A42A2A6FAC7000ACF4EF /* LaunchScreen.storyboard */; };
+ 2604C99FAB5A8322EDCABB9F /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FE71FBCAA714DB4F42459106 /* UIKit.framework */; };
+ 442540D056ADB9AE61A0A590 /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9F1B41978FA53999AA836D0F /* Security.framework */; };
+ 55892F1396056740E1AF9685 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = AF7DE91055EBD05ED77E57F9 /* main.m */; };
+ 55B7188F81C3C4183F81D3AE /* libc++.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = A39528EB2CCB182F5328223A /* libc++.tbd */; };
+ 57CD6306253C7A940098CD4A /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 57CD6305253C7A940098CD4A /* AudioToolbox.framework */; };
+ 57CD630E253C80EC0098CD4A /* assets in Resources */ = {isa = PBXBuildFile; fileRef = 57CD630A253C7F5F0098CD4A /* assets */; };
+/* End PBXBuildFile section */
+
+/* Begin PBXContainerItemProxy section */
+ 26BF2C4863C966DABAB40DC8 /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = 8DBF1E2B5C613DA41701F6D9 /* Project object */;
+ proxyType = 1;
+ remoteGlobalIDString = D08AEBE0B1A9C9A7B8C7B33F;
+ remoteInfo = cargo_ios;
+ };
+/* End PBXContainerItemProxy section */
+
+/* Begin PBXFileReference section */
+ 160DB77300A3F1806F024D47 /* bindings.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = bindings.h; sourceTree = ""; };
+ 2469A4282A6F9AC200ACF4EF /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = "ios-src/Assets.xcassets"; sourceTree = SOURCE_ROOT; };
+ 2469A42A2A6FAC7000ACF4EF /* LaunchScreen.storyboard */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; path = ios-src/LaunchScreen.storyboard; sourceTree = ""; };
+ 55EAC02897847195D2F44C15 /* mobile.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = mobile.app; sourceTree = BUILT_PRODUCTS_DIR; };
+ 57CD6305253C7A940098CD4A /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioToolbox.framework; path = System/Library/Frameworks/AudioToolbox.framework; sourceTree = SDKROOT; };
+ 57CD630A253C7F5F0098CD4A /* assets */ = {isa = PBXFileReference; lastKnownFileType = folder; name = assets; path = ../../assets; sourceTree = ""; };
+ 8EE7F1E3B0303533925D7E33 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist; path = Info.plist; sourceTree = ""; };
+ 96A1E5B62F48B379829E8A0D /* Metal.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Metal.framework; path = System/Library/Frameworks/Metal.framework; sourceTree = SDKROOT; };
+ 9F1B41978FA53999AA836D0F /* Security.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Security.framework; path = System/Library/Frameworks/Security.framework; sourceTree = SDKROOT; };
+ A39528EB2CCB182F5328223A /* libc++.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = "libc++.tbd"; path = "usr/lib/libc++.tbd"; sourceTree = SDKROOT; };
+ AF7DE91055EBD05ED77E57F9 /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; };
+ FE71FBCAA714DB4F42459106 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; };
+/* End PBXFileReference section */
+
+/* Begin PBXFrameworksBuildPhase section */
+ D5A822CB2D6847BA8800BE4C /* Frameworks */ = {
+ isa = PBXFrameworksBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 442540D056ADB9AE61A0A590 /* Security.framework in Frameworks */,
+ 134866208A035F8615C99114 /* Metal.framework in Frameworks */,
+ 2604C99FAB5A8322EDCABB9F /* UIKit.framework in Frameworks */,
+ 55B7188F81C3C4183F81D3AE /* libc++.tbd in Frameworks */,
+ 57CD6306253C7A940098CD4A /* AudioToolbox.framework in Frameworks */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXFrameworksBuildPhase section */
+
+/* Begin PBXGroup section */
+ 321F7D6A765B38E746C35105 /* Products */ = {
+ isa = PBXGroup;
+ children = (
+ 55EAC02897847195D2F44C15 /* mobile.app */,
+ );
+ name = Products;
+ sourceTree = "";
+ };
+ 4F1D6F28B8A5D1927AB0ADED /* ios-src */ = {
+ isa = PBXGroup;
+ children = (
+ 2469A4282A6F9AC200ACF4EF /* Assets.xcassets */,
+ 57CD630A253C7F5F0098CD4A /* assets */,
+ 160DB77300A3F1806F024D47 /* bindings.h */,
+ 8EE7F1E3B0303533925D7E33 /* Info.plist */,
+ AF7DE91055EBD05ED77E57F9 /* main.m */,
+ );
+ path = "ios-src";
+ sourceTree = "";
+ };
+ 8F2E3E6040EAD2EC9F3FA530 = {
+ isa = PBXGroup;
+ children = (
+ 2469A42A2A6FAC7000ACF4EF /* LaunchScreen.storyboard */,
+ 4F1D6F28B8A5D1927AB0ADED /* ios-src */,
+ EB028409C2D0655412DA6E44 /* Frameworks */,
+ 321F7D6A765B38E746C35105 /* Products */,
+ );
+ sourceTree = "";
+ };
+ EB028409C2D0655412DA6E44 /* Frameworks */ = {
+ isa = PBXGroup;
+ children = (
+ 57CD6305253C7A940098CD4A /* AudioToolbox.framework */,
+ A39528EB2CCB182F5328223A /* libc++.tbd */,
+ 96A1E5B62F48B379829E8A0D /* Metal.framework */,
+ 9F1B41978FA53999AA836D0F /* Security.framework */,
+ FE71FBCAA714DB4F42459106 /* UIKit.framework */,
+ );
+ name = Frameworks;
+ sourceTree = "";
+ };
+/* End PBXGroup section */
+
+/* Begin PBXLegacyTarget section */
+ D08AEBE0B1A9C9A7B8C7B33F /* cargo_ios */ = {
+ isa = PBXLegacyTarget;
+ buildArgumentsString = build_rust_deps.sh;
+ buildConfigurationList = AA00A0CFDB11F37F2BA3FC2E /* Build configuration list for PBXLegacyTarget "cargo_ios" */;
+ buildPhases = (
+ FE045B3D04D57B713A565FF8 /* Sources */,
+ );
+ buildToolPath = /bin/sh;
+ buildWorkingDirectory = .;
+ dependencies = (
+ );
+ name = cargo_ios;
+ passBuildSettingsInEnvironment = 1;
+ productName = cargo_ios;
+ };
+/* End PBXLegacyTarget section */
+
+/* Begin PBXNativeTarget section */
+ 3BDB8152E4962373181B4FE5 /* mobile */ = {
+ isa = PBXNativeTarget;
+ buildConfigurationList = E714A1AEAAE517C348B5BD27 /* Build configuration list for PBXNativeTarget "mobile" */;
+ buildPhases = (
+ 9F13800790AD9DBC2BC0F116 /* Sources */,
+ D5A822CB2D6847BA8800BE4C /* Frameworks */,
+ 57CD630D253C80E60098CD4A /* Resources */,
+ );
+ buildRules = (
+ );
+ dependencies = (
+ 19D4B9C22ADC6705B5132B4C /* PBXTargetDependency */,
+ );
+ name = mobile;
+ productName = mobile;
+ productReference = 55EAC02897847195D2F44C15 /* mobile.app */;
+ productType = "com.apple.product-type.application";
+ };
+/* End PBXNativeTarget section */
+
+/* Begin PBXProject section */
+ 8DBF1E2B5C613DA41701F6D9 /* Project object */ = {
+ isa = PBXProject;
+ attributes = {
+ LastUpgradeCheck = 1240;
+ };
+ buildConfigurationList = 9D43D41707A5C30B227B83F9 /* Build configuration list for PBXProject "mobile" */;
+ compatibilityVersion = "Xcode 10.0";
+ developmentRegion = en;
+ hasScannedForEncodings = 0;
+ knownRegions = (
+ en,
+ );
+ mainGroup = 8F2E3E6040EAD2EC9F3FA530;
+ projectDirPath = "";
+ projectRoot = "";
+ targets = (
+ 3BDB8152E4962373181B4FE5 /* mobile */,
+ D08AEBE0B1A9C9A7B8C7B33F /* cargo_ios */,
+ );
+ };
+/* End PBXProject section */
+
+/* Begin PBXResourcesBuildPhase section */
+ 57CD630D253C80E60098CD4A /* Resources */ = {
+ isa = PBXResourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 2469A42B2A6FAC7000ACF4EF /* LaunchScreen.storyboard in Resources */,
+ 2469A4292A6F9AC200ACF4EF /* Assets.xcassets in Resources */,
+ 57CD630E253C80EC0098CD4A /* assets in Resources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXResourcesBuildPhase section */
+
+/* Begin PBXSourcesBuildPhase section */
+ 9F13800790AD9DBC2BC0F116 /* Sources */ = {
+ isa = PBXSourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 55892F1396056740E1AF9685 /* main.m in Sources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ FE045B3D04D57B713A565FF8 /* Sources */ = {
+ isa = PBXSourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXSourcesBuildPhase section */
+
+/* Begin PBXTargetDependency section */
+ 19D4B9C22ADC6705B5132B4C /* PBXTargetDependency */ = {
+ isa = PBXTargetDependency;
+ target = D08AEBE0B1A9C9A7B8C7B33F /* cargo_ios */;
+ targetProxy = 26BF2C4863C966DABAB40DC8 /* PBXContainerItemProxy */;
+ };
+/* End PBXTargetDependency section */
+
+/* Begin XCBuildConfiguration section */
+ 4AD7BC6FDD56FF18FA6DA7D7 /* Debug */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ALWAYS_SEARCH_USER_PATHS = NO;
+ CLANG_ANALYZER_NONNULL = YES;
+ CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
+ CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
+ CLANG_CXX_LIBRARY = "libc++";
+ CLANG_ENABLE_MODULES = YES;
+ CLANG_ENABLE_OBJC_ARC = YES;
+ CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
+ CLANG_WARN_BOOL_CONVERSION = YES;
+ CLANG_WARN_COMMA = YES;
+ CLANG_WARN_CONSTANT_CONVERSION = YES;
+ CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
+ CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+ CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
+ CLANG_WARN_EMPTY_BODY = YES;
+ CLANG_WARN_ENUM_CONVERSION = YES;
+ CLANG_WARN_INFINITE_RECURSION = YES;
+ CLANG_WARN_INT_CONVERSION = YES;
+ CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
+ CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
+ CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
+ CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+ CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
+ CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
+ CLANG_WARN_STRICT_PROTOTYPES = YES;
+ CLANG_WARN_SUSPICIOUS_MOVE = YES;
+ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
+ CLANG_WARN_UNREACHABLE_CODE = YES;
+ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+ CODE_SIGN_IDENTITY = "";
+ COPY_PHASE_STRIP = NO;
+ DEBUG_INFORMATION_FORMAT = dwarf;
+ ENABLE_STRICT_OBJC_MSGSEND = YES;
+ ENABLE_TESTABILITY = YES;
+ GCC_C_LANGUAGE_STANDARD = gnu11;
+ GCC_DYNAMIC_NO_PIC = NO;
+ GCC_NO_COMMON_BLOCKS = YES;
+ GCC_OPTIMIZATION_LEVEL = 0;
+ GCC_PREPROCESSOR_DEFINITIONS = (
+ "$(inherited)",
+ "DEBUG=1",
+ );
+ GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+ GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+ GCC_WARN_UNDECLARED_SELECTOR = YES;
+ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+ GCC_WARN_UNUSED_FUNCTION = YES;
+ GCC_WARN_UNUSED_VARIABLE = YES;
+ MTL_ENABLE_DEBUG_INFO = YES;
+ ONLY_ACTIVE_ARCH = YES;
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ SDKROOT = iphoneos;
+ SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
+ SWIFT_OPTIMIZATION_LEVEL = "-Onone";
+ SWIFT_VERSION = 5.0;
+ };
+ name = Debug;
+ };
+ 5B14EC4ADC81FBF1F8CF20E9 /* Release */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
+ CLANG_CXX_LANGUAGE_STANDARD = "c++11";
+ CLANG_CXX_LIBRARY = "libc++";
+ CODE_SIGN_IDENTITY = "";
+ DEVELOPMENT_TEAM = "";
+ ENABLE_BITCODE = NO;
+ HEADER_SEARCH_PATHS = (
+ "$(inherited)",
+ "ios-src/",
+ );
+ INFOPLIST_FILE = "ios-src/Info.plist";
+ IPHONEOS_DEPLOYMENT_TARGET = 12.0;
+ LD_RUNPATH_SEARCH_PATHS = (
+ "$(inherited)",
+ "@executable_path/Frameworks",
+ );
+ "LIBRARY_SEARCH_PATHS[sdk=iphoneos*][arch=arm64]" = (
+ "$(inherited)",
+ "../target/aarch64-apple-ios/dist",
+ );
+ "LIBRARY_SEARCH_PATHS[sdk=iphonesimulator*][arch=arm64]" = (
+ "$(inherited)",
+ "../target/aarch64-apple-ios-sim/dist",
+ );
+ "LIBRARY_SEARCH_PATHS[sdk=iphonesimulator*][arch=x86_64]" = (
+ "$(inherited)",
+ "../target/x86_64-apple-ios/dist",
+ );
+ OTHER_LDFLAGS = (
+ "$(inherited)",
+ "-lmobile",
+ "-lc++abi",
+ );
+ PRODUCT_BUNDLE_IDENTIFIER /* Todo */ = com.opencodebox.tttce;
+ SDKROOT = iphoneos;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ };
+ name = Release;
+ };
+ 79E3C28F06346EA58420A93D /* Release */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ALWAYS_SEARCH_USER_PATHS = NO;
+ CLANG_ANALYZER_NONNULL = YES;
+ CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
+ CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
+ CLANG_CXX_LIBRARY = "libc++";
+ CLANG_ENABLE_MODULES = YES;
+ CLANG_ENABLE_OBJC_ARC = YES;
+ CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
+ CLANG_WARN_BOOL_CONVERSION = YES;
+ CLANG_WARN_COMMA = YES;
+ CLANG_WARN_CONSTANT_CONVERSION = YES;
+ CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
+ CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+ CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
+ CLANG_WARN_EMPTY_BODY = YES;
+ CLANG_WARN_ENUM_CONVERSION = YES;
+ CLANG_WARN_INFINITE_RECURSION = YES;
+ CLANG_WARN_INT_CONVERSION = YES;
+ CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
+ CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
+ CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
+ CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+ CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
+ CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
+ CLANG_WARN_STRICT_PROTOTYPES = YES;
+ CLANG_WARN_SUSPICIOUS_MOVE = YES;
+ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
+ CLANG_WARN_UNREACHABLE_CODE = YES;
+ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+ CODE_SIGN_IDENTITY = "";
+ COPY_PHASE_STRIP = NO;
+ DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
+ ENABLE_NS_ASSERTIONS = NO;
+ ENABLE_STRICT_OBJC_MSGSEND = YES;
+ GCC_C_LANGUAGE_STANDARD = gnu11;
+ GCC_NO_COMMON_BLOCKS = YES;
+ GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+ GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+ GCC_WARN_UNDECLARED_SELECTOR = YES;
+ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+ GCC_WARN_UNUSED_FUNCTION = YES;
+ GCC_WARN_UNUSED_VARIABLE = YES;
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ SDKROOT = iphoneos;
+ SWIFT_COMPILATION_MODE = wholemodule;
+ SWIFT_VERSION = 5.0;
+ VALIDATE_PRODUCT = YES;
+ };
+ name = Release;
+ };
+ 8265913A25816D964A847F1B /* Debug */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ LD_RUNPATH_SEARCH_PATHS = (
+ "$(inherited)",
+ "@executable_path/Frameworks",
+ );
+ PRODUCT_BUNDLE_IDENTIFIER = "com.rust.cargo-ios";
+ SDKROOT = iphoneos;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ };
+ name = Debug;
+ };
+ A2D5B73DD30D562B6F366526 /* Debug */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
+ CLANG_CXX_LANGUAGE_STANDARD = "c++11";
+ CLANG_CXX_LIBRARY = "libc++";
+ CODE_SIGN_IDENTITY = "";
+ DEVELOPMENT_TEAM = "";
+ ENABLE_BITCODE = NO;
+ HEADER_SEARCH_PATHS = (
+ "$(inherited)",
+ "ios-src/",
+ );
+ INFOPLIST_FILE = "ios-src/Info.plist";
+ IPHONEOS_DEPLOYMENT_TARGET = 12.0;
+ LD_RUNPATH_SEARCH_PATHS = (
+ "$(inherited)",
+ "@executable_path/Frameworks",
+ );
+ "LIBRARY_SEARCH_PATHS[sdk=iphoneos*][arch=arm64]" = (
+ "$(inherited)",
+ "../target/aarch64-apple-ios/debug",
+ );
+ "LIBRARY_SEARCH_PATHS[sdk=iphonesimulator*][arch=arm64]" = (
+ "$(inherited)",
+ "../target/aarch64-apple-ios-sim/debug",
+ );
+ "LIBRARY_SEARCH_PATHS[sdk=iphonesimulator*][arch=x86_64]" = (
+ "$(inherited)",
+ "../target/x86_64-apple-ios/debug",
+ );
+ OTHER_LDFLAGS = (
+ "$(inherited)",
+ "-lmobile",
+ "-lc++abi",
+ );
+ PRODUCT_BUNDLE_IDENTIFIER /* Todo */ = com.opencodebox.tttce;
+ SDKROOT = iphoneos;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ };
+ name = Debug;
+ };
+ FEA9B18D9236F9F6DC6DF799 /* Release */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ LD_RUNPATH_SEARCH_PATHS = (
+ "$(inherited)",
+ "@executable_path/Frameworks",
+ );
+ PRODUCT_BUNDLE_IDENTIFIER = "com.rust.cargo-ios";
+ SDKROOT = iphoneos;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ };
+ name = Release;
+ };
+/* End XCBuildConfiguration section */
+
+/* Begin XCConfigurationList section */
+ 9D43D41707A5C30B227B83F9 /* Build configuration list for PBXProject "mobile" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ 4AD7BC6FDD56FF18FA6DA7D7 /* Debug */,
+ 79E3C28F06346EA58420A93D /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Debug;
+ };
+ AA00A0CFDB11F37F2BA3FC2E /* Build configuration list for PBXLegacyTarget "cargo_ios" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ 8265913A25816D964A847F1B /* Debug */,
+ FEA9B18D9236F9F6DC6DF799 /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Debug;
+ };
+ E714A1AEAAE517C348B5BD27 /* Build configuration list for PBXNativeTarget "mobile" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ A2D5B73DD30D562B6F366526 /* Debug */,
+ 5B14EC4ADC81FBF1F8CF20E9 /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Debug;
+ };
+/* End XCConfigurationList section */
+ };
+ rootObject = 8DBF1E2B5C613DA41701F6D9 /* Project object */;
+}
diff --git a/mobile/mobile.xcodeproj/xcshareddata/xcschemes/mobile.xcscheme b/mobile/mobile.xcodeproj/xcshareddata/xcschemes/mobile.xcscheme
new file mode 100644
index 0000000..495aaf6
--- /dev/null
+++ b/mobile/mobile.xcodeproj/xcshareddata/xcschemes/mobile.xcscheme
@@ -0,0 +1,78 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/mobile/src/lib.rs b/mobile/src/lib.rs
new file mode 100644
index 0000000..13c5f56
--- /dev/null
+++ b/mobile/src/lib.rs
@@ -0,0 +1,20 @@
+use bevy::prelude::*;
+use bevy::window::WindowMode;
+use ttt-ce::GamePlugin; // ToDo: Replace ttt-ce with your new crate name.
+
+#[bevy_main]
+fn main() {
+ App::new()
+ .add_plugins((
+ DefaultPlugins.set(WindowPlugin {
+ primary_window: Some(Window {
+ resizable: false,
+ mode: WindowMode::BorderlessFullscreen,
+ ..default()
+ }),
+ ..default()
+ }),
+ GamePlugin,
+ ))
+ .run()
+}
diff --git a/raw-assets/Ciathyza-Gridbox_Prototype_Materials/credits.txt b/raw-assets/Ciathyza-Gridbox_Prototype_Materials/credits.txt
new file mode 100644
index 0000000..4f57aca
--- /dev/null
+++ b/raw-assets/Ciathyza-Gridbox_Prototype_Materials/credits.txt
@@ -0,0 +1,4 @@
+taken from Unity Assetstore https://assetstore.unity.com/packages/2d/textures-materials/gridbox-prototype-materials-129127
+creator: Ciathyza
+website: https://www.ciathyza.com/
+license: https://unity.com/legal/as-terms
diff --git a/raw-assets/Ciathyza-Gridbox_Prototype_Materials/prototype_512x512_blue1.png b/raw-assets/Ciathyza-Gridbox_Prototype_Materials/prototype_512x512_blue1.png
new file mode 100644
index 0000000..e93e044
Binary files /dev/null and b/raw-assets/Ciathyza-Gridbox_Prototype_Materials/prototype_512x512_blue1.png differ
diff --git a/raw-assets/Ciathyza-Gridbox_Prototype_Materials/prototype_512x512_blue2.png b/raw-assets/Ciathyza-Gridbox_Prototype_Materials/prototype_512x512_blue2.png
new file mode 100644
index 0000000..398c702
Binary files /dev/null and b/raw-assets/Ciathyza-Gridbox_Prototype_Materials/prototype_512x512_blue2.png differ
diff --git a/raw-assets/Ciathyza-Gridbox_Prototype_Materials/prototype_512x512_blue3.png b/raw-assets/Ciathyza-Gridbox_Prototype_Materials/prototype_512x512_blue3.png
new file mode 100644
index 0000000..8a10ef1
Binary files /dev/null and b/raw-assets/Ciathyza-Gridbox_Prototype_Materials/prototype_512x512_blue3.png differ
diff --git a/raw-assets/Ciathyza-Gridbox_Prototype_Materials/prototype_512x512_brown.png b/raw-assets/Ciathyza-Gridbox_Prototype_Materials/prototype_512x512_brown.png
new file mode 100644
index 0000000..faa1582
Binary files /dev/null and b/raw-assets/Ciathyza-Gridbox_Prototype_Materials/prototype_512x512_brown.png differ
diff --git a/raw-assets/Ciathyza-Gridbox_Prototype_Materials/prototype_512x512_cyan.png b/raw-assets/Ciathyza-Gridbox_Prototype_Materials/prototype_512x512_cyan.png
new file mode 100644
index 0000000..f46f202
Binary files /dev/null and b/raw-assets/Ciathyza-Gridbox_Prototype_Materials/prototype_512x512_cyan.png differ
diff --git a/raw-assets/Ciathyza-Gridbox_Prototype_Materials/prototype_512x512_green1.png b/raw-assets/Ciathyza-Gridbox_Prototype_Materials/prototype_512x512_green1.png
new file mode 100644
index 0000000..f83f216
Binary files /dev/null and b/raw-assets/Ciathyza-Gridbox_Prototype_Materials/prototype_512x512_green1.png differ
diff --git a/raw-assets/Ciathyza-Gridbox_Prototype_Materials/prototype_512x512_green2.png b/raw-assets/Ciathyza-Gridbox_Prototype_Materials/prototype_512x512_green2.png
new file mode 100644
index 0000000..ec4f1fe
Binary files /dev/null and b/raw-assets/Ciathyza-Gridbox_Prototype_Materials/prototype_512x512_green2.png differ
diff --git a/raw-assets/Ciathyza-Gridbox_Prototype_Materials/prototype_512x512_green3.png b/raw-assets/Ciathyza-Gridbox_Prototype_Materials/prototype_512x512_green3.png
new file mode 100644
index 0000000..39534b6
Binary files /dev/null and b/raw-assets/Ciathyza-Gridbox_Prototype_Materials/prototype_512x512_green3.png differ
diff --git a/raw-assets/Ciathyza-Gridbox_Prototype_Materials/prototype_512x512_grey1.png b/raw-assets/Ciathyza-Gridbox_Prototype_Materials/prototype_512x512_grey1.png
new file mode 100644
index 0000000..dd06d3c
Binary files /dev/null and b/raw-assets/Ciathyza-Gridbox_Prototype_Materials/prototype_512x512_grey1.png differ
diff --git a/raw-assets/Ciathyza-Gridbox_Prototype_Materials/prototype_512x512_grey2.png b/raw-assets/Ciathyza-Gridbox_Prototype_Materials/prototype_512x512_grey2.png
new file mode 100644
index 0000000..c9e380a
Binary files /dev/null and b/raw-assets/Ciathyza-Gridbox_Prototype_Materials/prototype_512x512_grey2.png differ
diff --git a/raw-assets/Ciathyza-Gridbox_Prototype_Materials/prototype_512x512_grey3.png b/raw-assets/Ciathyza-Gridbox_Prototype_Materials/prototype_512x512_grey3.png
new file mode 100644
index 0000000..cceee74
Binary files /dev/null and b/raw-assets/Ciathyza-Gridbox_Prototype_Materials/prototype_512x512_grey3.png differ
diff --git a/raw-assets/Ciathyza-Gridbox_Prototype_Materials/prototype_512x512_grey4.png b/raw-assets/Ciathyza-Gridbox_Prototype_Materials/prototype_512x512_grey4.png
new file mode 100644
index 0000000..61a15ae
Binary files /dev/null and b/raw-assets/Ciathyza-Gridbox_Prototype_Materials/prototype_512x512_grey4.png differ
diff --git a/raw-assets/Ciathyza-Gridbox_Prototype_Materials/prototype_512x512_magenta.png b/raw-assets/Ciathyza-Gridbox_Prototype_Materials/prototype_512x512_magenta.png
new file mode 100644
index 0000000..65ab1ce
Binary files /dev/null and b/raw-assets/Ciathyza-Gridbox_Prototype_Materials/prototype_512x512_magenta.png differ
diff --git a/raw-assets/Ciathyza-Gridbox_Prototype_Materials/prototype_512x512_normal.png b/raw-assets/Ciathyza-Gridbox_Prototype_Materials/prototype_512x512_normal.png
new file mode 100644
index 0000000..4558d70
Binary files /dev/null and b/raw-assets/Ciathyza-Gridbox_Prototype_Materials/prototype_512x512_normal.png differ
diff --git a/raw-assets/Ciathyza-Gridbox_Prototype_Materials/prototype_512x512_olive.png b/raw-assets/Ciathyza-Gridbox_Prototype_Materials/prototype_512x512_olive.png
new file mode 100644
index 0000000..bdf476c
Binary files /dev/null and b/raw-assets/Ciathyza-Gridbox_Prototype_Materials/prototype_512x512_olive.png differ
diff --git a/raw-assets/Ciathyza-Gridbox_Prototype_Materials/prototype_512x512_orange.png b/raw-assets/Ciathyza-Gridbox_Prototype_Materials/prototype_512x512_orange.png
new file mode 100644
index 0000000..6ae0986
Binary files /dev/null and b/raw-assets/Ciathyza-Gridbox_Prototype_Materials/prototype_512x512_orange.png differ
diff --git a/raw-assets/Ciathyza-Gridbox_Prototype_Materials/prototype_512x512_pink.png b/raw-assets/Ciathyza-Gridbox_Prototype_Materials/prototype_512x512_pink.png
new file mode 100644
index 0000000..8733887
Binary files /dev/null and b/raw-assets/Ciathyza-Gridbox_Prototype_Materials/prototype_512x512_pink.png differ
diff --git a/raw-assets/Ciathyza-Gridbox_Prototype_Materials/prototype_512x512_purple.png b/raw-assets/Ciathyza-Gridbox_Prototype_Materials/prototype_512x512_purple.png
new file mode 100644
index 0000000..13b7182
Binary files /dev/null and b/raw-assets/Ciathyza-Gridbox_Prototype_Materials/prototype_512x512_purple.png differ
diff --git a/raw-assets/Ciathyza-Gridbox_Prototype_Materials/prototype_512x512_red.png b/raw-assets/Ciathyza-Gridbox_Prototype_Materials/prototype_512x512_red.png
new file mode 100644
index 0000000..9e4a710
Binary files /dev/null and b/raw-assets/Ciathyza-Gridbox_Prototype_Materials/prototype_512x512_red.png differ
diff --git a/raw-assets/Ciathyza-Gridbox_Prototype_Materials/prototype_512x512_white.png b/raw-assets/Ciathyza-Gridbox_Prototype_Materials/prototype_512x512_white.png
new file mode 100644
index 0000000..2c3ad6b
Binary files /dev/null and b/raw-assets/Ciathyza-Gridbox_Prototype_Materials/prototype_512x512_white.png differ
diff --git a/raw-assets/Ciathyza-Gridbox_Prototype_Materials/prototype_512x512_yellow.png b/raw-assets/Ciathyza-Gridbox_Prototype_Materials/prototype_512x512_yellow.png
new file mode 100644
index 0000000..c52d70b
Binary files /dev/null and b/raw-assets/Ciathyza-Gridbox_Prototype_Materials/prototype_512x512_yellow.png differ
diff --git a/raw-assets/DigitalKonstrukt-Prototyping_Pack_Free/Meshes/Bridges/PTK_Bridge_Large.fbx b/raw-assets/DigitalKonstrukt-Prototyping_Pack_Free/Meshes/Bridges/PTK_Bridge_Large.fbx
new file mode 100644
index 0000000..8eb3f31
Binary files /dev/null and b/raw-assets/DigitalKonstrukt-Prototyping_Pack_Free/Meshes/Bridges/PTK_Bridge_Large.fbx differ
diff --git a/raw-assets/DigitalKonstrukt-Prototyping_Pack_Free/Meshes/Bridges/PTK_Bridge_Medium.fbx b/raw-assets/DigitalKonstrukt-Prototyping_Pack_Free/Meshes/Bridges/PTK_Bridge_Medium.fbx
new file mode 100644
index 0000000..e06760f
Binary files /dev/null and b/raw-assets/DigitalKonstrukt-Prototyping_Pack_Free/Meshes/Bridges/PTK_Bridge_Medium.fbx differ
diff --git a/raw-assets/DigitalKonstrukt-Prototyping_Pack_Free/Meshes/Bridges/PTK_Bridge_Small.fbx b/raw-assets/DigitalKonstrukt-Prototyping_Pack_Free/Meshes/Bridges/PTK_Bridge_Small.fbx
new file mode 100644
index 0000000..32bc052
Binary files /dev/null and b/raw-assets/DigitalKonstrukt-Prototyping_Pack_Free/Meshes/Bridges/PTK_Bridge_Small.fbx differ
diff --git a/raw-assets/DigitalKonstrukt-Prototyping_Pack_Free/Meshes/Collectables/PTK_Collectable_1.fbx b/raw-assets/DigitalKonstrukt-Prototyping_Pack_Free/Meshes/Collectables/PTK_Collectable_1.fbx
new file mode 100644
index 0000000..7039818
Binary files /dev/null and b/raw-assets/DigitalKonstrukt-Prototyping_Pack_Free/Meshes/Collectables/PTK_Collectable_1.fbx differ
diff --git a/raw-assets/DigitalKonstrukt-Prototyping_Pack_Free/Meshes/Collectables/PTK_Collectable_2.fbx b/raw-assets/DigitalKonstrukt-Prototyping_Pack_Free/Meshes/Collectables/PTK_Collectable_2.fbx
new file mode 100644
index 0000000..745c32d
Binary files /dev/null and b/raw-assets/DigitalKonstrukt-Prototyping_Pack_Free/Meshes/Collectables/PTK_Collectable_2.fbx differ
diff --git a/raw-assets/DigitalKonstrukt-Prototyping_Pack_Free/Meshes/Columns/PTK_Column_Edge_Large.fbx b/raw-assets/DigitalKonstrukt-Prototyping_Pack_Free/Meshes/Columns/PTK_Column_Edge_Large.fbx
new file mode 100644
index 0000000..569856b
Binary files /dev/null and b/raw-assets/DigitalKonstrukt-Prototyping_Pack_Free/Meshes/Columns/PTK_Column_Edge_Large.fbx differ
diff --git a/raw-assets/DigitalKonstrukt-Prototyping_Pack_Free/Meshes/Columns/PTK_Column_Edge_Medium.fbx b/raw-assets/DigitalKonstrukt-Prototyping_Pack_Free/Meshes/Columns/PTK_Column_Edge_Medium.fbx
new file mode 100644
index 0000000..5d3d6f9
Binary files /dev/null and b/raw-assets/DigitalKonstrukt-Prototyping_Pack_Free/Meshes/Columns/PTK_Column_Edge_Medium.fbx differ
diff --git a/raw-assets/DigitalKonstrukt-Prototyping_Pack_Free/Meshes/Columns/PTK_Column_Edge_Small.fbx b/raw-assets/DigitalKonstrukt-Prototyping_Pack_Free/Meshes/Columns/PTK_Column_Edge_Small.fbx
new file mode 100644
index 0000000..63f4032
Binary files /dev/null and b/raw-assets/DigitalKonstrukt-Prototyping_Pack_Free/Meshes/Columns/PTK_Column_Edge_Small.fbx differ
diff --git a/raw-assets/DigitalKonstrukt-Prototyping_Pack_Free/Meshes/Columns/PTK_Column_Large.fbx b/raw-assets/DigitalKonstrukt-Prototyping_Pack_Free/Meshes/Columns/PTK_Column_Large.fbx
new file mode 100644
index 0000000..cede9c9
Binary files /dev/null and b/raw-assets/DigitalKonstrukt-Prototyping_Pack_Free/Meshes/Columns/PTK_Column_Large.fbx differ
diff --git a/raw-assets/DigitalKonstrukt-Prototyping_Pack_Free/Meshes/Columns/PTK_Column_Medium.fbx b/raw-assets/DigitalKonstrukt-Prototyping_Pack_Free/Meshes/Columns/PTK_Column_Medium.fbx
new file mode 100644
index 0000000..6882371
Binary files /dev/null and b/raw-assets/DigitalKonstrukt-Prototyping_Pack_Free/Meshes/Columns/PTK_Column_Medium.fbx differ
diff --git a/raw-assets/DigitalKonstrukt-Prototyping_Pack_Free/Meshes/Columns/PTK_Column_Small.fbx b/raw-assets/DigitalKonstrukt-Prototyping_Pack_Free/Meshes/Columns/PTK_Column_Small.fbx
new file mode 100644
index 0000000..f4909b9
Binary files /dev/null and b/raw-assets/DigitalKonstrukt-Prototyping_Pack_Free/Meshes/Columns/PTK_Column_Small.fbx differ
diff --git a/raw-assets/DigitalKonstrukt-Prototyping_Pack_Free/Meshes/Containers/PTK_Chest.fbx b/raw-assets/DigitalKonstrukt-Prototyping_Pack_Free/Meshes/Containers/PTK_Chest.fbx
new file mode 100644
index 0000000..d6a33b4
Binary files /dev/null and b/raw-assets/DigitalKonstrukt-Prototyping_Pack_Free/Meshes/Containers/PTK_Chest.fbx differ
diff --git a/raw-assets/DigitalKonstrukt-Prototyping_Pack_Free/Meshes/Containers/PTK_Pool.fbx b/raw-assets/DigitalKonstrukt-Prototyping_Pack_Free/Meshes/Containers/PTK_Pool.fbx
new file mode 100644
index 0000000..5db54d8
Binary files /dev/null and b/raw-assets/DigitalKonstrukt-Prototyping_Pack_Free/Meshes/Containers/PTK_Pool.fbx differ
diff --git a/raw-assets/DigitalKonstrukt-Prototyping_Pack_Free/Meshes/Cubes/PTK_Cube_1.fbx b/raw-assets/DigitalKonstrukt-Prototyping_Pack_Free/Meshes/Cubes/PTK_Cube_1.fbx
new file mode 100644
index 0000000..437d835
Binary files /dev/null and b/raw-assets/DigitalKonstrukt-Prototyping_Pack_Free/Meshes/Cubes/PTK_Cube_1.fbx differ
diff --git a/raw-assets/DigitalKonstrukt-Prototyping_Pack_Free/Meshes/Cubes/PTK_Cube_2.fbx b/raw-assets/DigitalKonstrukt-Prototyping_Pack_Free/Meshes/Cubes/PTK_Cube_2.fbx
new file mode 100644
index 0000000..109acb6
Binary files /dev/null and b/raw-assets/DigitalKonstrukt-Prototyping_Pack_Free/Meshes/Cubes/PTK_Cube_2.fbx differ
diff --git a/raw-assets/DigitalKonstrukt-Prototyping_Pack_Free/Meshes/Cuboids/PTK_Cuboid_1.fbx b/raw-assets/DigitalKonstrukt-Prototyping_Pack_Free/Meshes/Cuboids/PTK_Cuboid_1.fbx
new file mode 100644
index 0000000..8682b90
Binary files /dev/null and b/raw-assets/DigitalKonstrukt-Prototyping_Pack_Free/Meshes/Cuboids/PTK_Cuboid_1.fbx differ
diff --git a/raw-assets/DigitalKonstrukt-Prototyping_Pack_Free/Meshes/Cuboids/PTK_Cuboid_2.fbx b/raw-assets/DigitalKonstrukt-Prototyping_Pack_Free/Meshes/Cuboids/PTK_Cuboid_2.fbx
new file mode 100644
index 0000000..a229ee9
Binary files /dev/null and b/raw-assets/DigitalKonstrukt-Prototyping_Pack_Free/Meshes/Cuboids/PTK_Cuboid_2.fbx differ
diff --git a/raw-assets/DigitalKonstrukt-Prototyping_Pack_Free/Meshes/Cuboids/PTK_Cuboid_3.fbx b/raw-assets/DigitalKonstrukt-Prototyping_Pack_Free/Meshes/Cuboids/PTK_Cuboid_3.fbx
new file mode 100644
index 0000000..0f7b033
Binary files /dev/null and b/raw-assets/DigitalKonstrukt-Prototyping_Pack_Free/Meshes/Cuboids/PTK_Cuboid_3.fbx differ
diff --git a/raw-assets/DigitalKonstrukt-Prototyping_Pack_Free/Meshes/Cuboids/PTK_Cuboid_4.fbx b/raw-assets/DigitalKonstrukt-Prototyping_Pack_Free/Meshes/Cuboids/PTK_Cuboid_4.fbx
new file mode 100644
index 0000000..8a4f76f
Binary files /dev/null and b/raw-assets/DigitalKonstrukt-Prototyping_Pack_Free/Meshes/Cuboids/PTK_Cuboid_4.fbx differ
diff --git a/raw-assets/DigitalKonstrukt-Prototyping_Pack_Free/Meshes/Cuboids/PTK_Cuboid_5.fbx b/raw-assets/DigitalKonstrukt-Prototyping_Pack_Free/Meshes/Cuboids/PTK_Cuboid_5.fbx
new file mode 100644
index 0000000..67eda46
Binary files /dev/null and b/raw-assets/DigitalKonstrukt-Prototyping_Pack_Free/Meshes/Cuboids/PTK_Cuboid_5.fbx differ
diff --git a/raw-assets/DigitalKonstrukt-Prototyping_Pack_Free/Meshes/Doors/PTK_Door_Medium.fbx b/raw-assets/DigitalKonstrukt-Prototyping_Pack_Free/Meshes/Doors/PTK_Door_Medium.fbx
new file mode 100644
index 0000000..439f682
Binary files /dev/null and b/raw-assets/DigitalKonstrukt-Prototyping_Pack_Free/Meshes/Doors/PTK_Door_Medium.fbx differ
diff --git a/raw-assets/DigitalKonstrukt-Prototyping_Pack_Free/Meshes/Doors/PTK_Door_Medium_2.fbx b/raw-assets/DigitalKonstrukt-Prototyping_Pack_Free/Meshes/Doors/PTK_Door_Medium_2.fbx
new file mode 100644
index 0000000..d1dec2d
Binary files /dev/null and b/raw-assets/DigitalKonstrukt-Prototyping_Pack_Free/Meshes/Doors/PTK_Door_Medium_2.fbx differ
diff --git a/raw-assets/DigitalKonstrukt-Prototyping_Pack_Free/Meshes/Doors/PTK_DoubleDoor_Medium.fbx b/raw-assets/DigitalKonstrukt-Prototyping_Pack_Free/Meshes/Doors/PTK_DoubleDoor_Medium.fbx
new file mode 100644
index 0000000..6035b3d
Binary files /dev/null and b/raw-assets/DigitalKonstrukt-Prototyping_Pack_Free/Meshes/Doors/PTK_DoubleDoor_Medium.fbx differ
diff --git a/raw-assets/DigitalKonstrukt-Prototyping_Pack_Free/Meshes/Doors/PTK_RevolvingDoor_Medium.fbx b/raw-assets/DigitalKonstrukt-Prototyping_Pack_Free/Meshes/Doors/PTK_RevolvingDoor_Medium.fbx
new file mode 100644
index 0000000..7e390f8
Binary files /dev/null and b/raw-assets/DigitalKonstrukt-Prototyping_Pack_Free/Meshes/Doors/PTK_RevolvingDoor_Medium.fbx differ
diff --git a/raw-assets/DigitalKonstrukt-Prototyping_Pack_Free/Meshes/Doors/PTK_SlidingDoor_Large.fbx b/raw-assets/DigitalKonstrukt-Prototyping_Pack_Free/Meshes/Doors/PTK_SlidingDoor_Large.fbx
new file mode 100644
index 0000000..edae3ff
Binary files /dev/null and b/raw-assets/DigitalKonstrukt-Prototyping_Pack_Free/Meshes/Doors/PTK_SlidingDoor_Large.fbx differ
diff --git a/raw-assets/DigitalKonstrukt-Prototyping_Pack_Free/Meshes/Doors/PTK_SlidingDoor_Medium.fbx b/raw-assets/DigitalKonstrukt-Prototyping_Pack_Free/Meshes/Doors/PTK_SlidingDoor_Medium.fbx
new file mode 100644
index 0000000..42ae659
Binary files /dev/null and b/raw-assets/DigitalKonstrukt-Prototyping_Pack_Free/Meshes/Doors/PTK_SlidingDoor_Medium.fbx differ
diff --git a/raw-assets/DigitalKonstrukt-Prototyping_Pack_Free/Meshes/Doors/PTK_Tunnel_Large.fbx b/raw-assets/DigitalKonstrukt-Prototyping_Pack_Free/Meshes/Doors/PTK_Tunnel_Large.fbx
new file mode 100644
index 0000000..26ab4de
Binary files /dev/null and b/raw-assets/DigitalKonstrukt-Prototyping_Pack_Free/Meshes/Doors/PTK_Tunnel_Large.fbx differ
diff --git a/raw-assets/DigitalKonstrukt-Prototyping_Pack_Free/Meshes/Doors/PTK_Tunnel_Medium.fbx b/raw-assets/DigitalKonstrukt-Prototyping_Pack_Free/Meshes/Doors/PTK_Tunnel_Medium.fbx
new file mode 100644
index 0000000..761b658
Binary files /dev/null and b/raw-assets/DigitalKonstrukt-Prototyping_Pack_Free/Meshes/Doors/PTK_Tunnel_Medium.fbx differ
diff --git a/raw-assets/DigitalKonstrukt-Prototyping_Pack_Free/Meshes/Doors/PTK_Tunnel_Small.fbx b/raw-assets/DigitalKonstrukt-Prototyping_Pack_Free/Meshes/Doors/PTK_Tunnel_Small.fbx
new file mode 100644
index 0000000..9c15ac9
Binary files /dev/null and b/raw-assets/DigitalKonstrukt-Prototyping_Pack_Free/Meshes/Doors/PTK_Tunnel_Small.fbx differ
diff --git a/raw-assets/DigitalKonstrukt-Prototyping_Pack_Free/Meshes/Elevators/PTK_Elevator.fbx b/raw-assets/DigitalKonstrukt-Prototyping_Pack_Free/Meshes/Elevators/PTK_Elevator.fbx
new file mode 100644
index 0000000..4696c32
Binary files /dev/null and b/raw-assets/DigitalKonstrukt-Prototyping_Pack_Free/Meshes/Elevators/PTK_Elevator.fbx differ
diff --git a/raw-assets/DigitalKonstrukt-Prototyping_Pack_Free/Meshes/Elevators/PTK_ElevatorFrame.fbx b/raw-assets/DigitalKonstrukt-Prototyping_Pack_Free/Meshes/Elevators/PTK_ElevatorFrame.fbx
new file mode 100644
index 0000000..862ef4a
Binary files /dev/null and b/raw-assets/DigitalKonstrukt-Prototyping_Pack_Free/Meshes/Elevators/PTK_ElevatorFrame.fbx differ
diff --git a/raw-assets/DigitalKonstrukt-Prototyping_Pack_Free/Meshes/Elevators/PTK_Elevator_2Floors.fbx b/raw-assets/DigitalKonstrukt-Prototyping_Pack_Free/Meshes/Elevators/PTK_Elevator_2Floors.fbx
new file mode 100644
index 0000000..d0461e7
Binary files /dev/null and b/raw-assets/DigitalKonstrukt-Prototyping_Pack_Free/Meshes/Elevators/PTK_Elevator_2Floors.fbx differ
diff --git a/raw-assets/DigitalKonstrukt-Prototyping_Pack_Free/Meshes/Elevators/PTK_Elevator_3Floors.fbx b/raw-assets/DigitalKonstrukt-Prototyping_Pack_Free/Meshes/Elevators/PTK_Elevator_3Floors.fbx
new file mode 100644
index 0000000..52fd232
Binary files /dev/null and b/raw-assets/DigitalKonstrukt-Prototyping_Pack_Free/Meshes/Elevators/PTK_Elevator_3Floors.fbx differ
diff --git a/raw-assets/DigitalKonstrukt-Prototyping_Pack_Free/Meshes/Ladders/PTK_Ladder_Large.fbx b/raw-assets/DigitalKonstrukt-Prototyping_Pack_Free/Meshes/Ladders/PTK_Ladder_Large.fbx
new file mode 100644
index 0000000..23fa69f
Binary files /dev/null and b/raw-assets/DigitalKonstrukt-Prototyping_Pack_Free/Meshes/Ladders/PTK_Ladder_Large.fbx differ
diff --git a/raw-assets/DigitalKonstrukt-Prototyping_Pack_Free/Meshes/Ladders/PTK_Ladder_Medium.fbx b/raw-assets/DigitalKonstrukt-Prototyping_Pack_Free/Meshes/Ladders/PTK_Ladder_Medium.fbx
new file mode 100644
index 0000000..26492c6
Binary files /dev/null and b/raw-assets/DigitalKonstrukt-Prototyping_Pack_Free/Meshes/Ladders/PTK_Ladder_Medium.fbx differ
diff --git a/raw-assets/DigitalKonstrukt-Prototyping_Pack_Free/Meshes/Ladders/PTK_Ladder_Small.fbx b/raw-assets/DigitalKonstrukt-Prototyping_Pack_Free/Meshes/Ladders/PTK_Ladder_Small.fbx
new file mode 100644
index 0000000..acedd75
Binary files /dev/null and b/raw-assets/DigitalKonstrukt-Prototyping_Pack_Free/Meshes/Ladders/PTK_Ladder_Small.fbx differ
diff --git a/raw-assets/DigitalKonstrukt-Prototyping_Pack_Free/Meshes/Lamps/PTK_Lamp.fbx b/raw-assets/DigitalKonstrukt-Prototyping_Pack_Free/Meshes/Lamps/PTK_Lamp.fbx
new file mode 100644
index 0000000..42cf475
Binary files /dev/null and b/raw-assets/DigitalKonstrukt-Prototyping_Pack_Free/Meshes/Lamps/PTK_Lamp.fbx differ
diff --git a/raw-assets/DigitalKonstrukt-Prototyping_Pack_Free/Meshes/PointsOfInterest/PTK_ActionField.fbx b/raw-assets/DigitalKonstrukt-Prototyping_Pack_Free/Meshes/PointsOfInterest/PTK_ActionField.fbx
new file mode 100644
index 0000000..85e444b
Binary files /dev/null and b/raw-assets/DigitalKonstrukt-Prototyping_Pack_Free/Meshes/PointsOfInterest/PTK_ActionField.fbx differ
diff --git a/raw-assets/DigitalKonstrukt-Prototyping_Pack_Free/Meshes/PointsOfInterest/PTK_Exclamation.fbx b/raw-assets/DigitalKonstrukt-Prototyping_Pack_Free/Meshes/PointsOfInterest/PTK_Exclamation.fbx
new file mode 100644
index 0000000..4e5c580
Binary files /dev/null and b/raw-assets/DigitalKonstrukt-Prototyping_Pack_Free/Meshes/PointsOfInterest/PTK_Exclamation.fbx differ
diff --git a/raw-assets/DigitalKonstrukt-Prototyping_Pack_Free/Meshes/Ramps/PTK_Ramp_Large.fbx b/raw-assets/DigitalKonstrukt-Prototyping_Pack_Free/Meshes/Ramps/PTK_Ramp_Large.fbx
new file mode 100644
index 0000000..8243147
Binary files /dev/null and b/raw-assets/DigitalKonstrukt-Prototyping_Pack_Free/Meshes/Ramps/PTK_Ramp_Large.fbx differ
diff --git a/raw-assets/DigitalKonstrukt-Prototyping_Pack_Free/Meshes/Ramps/PTK_Ramp_Medium.fbx b/raw-assets/DigitalKonstrukt-Prototyping_Pack_Free/Meshes/Ramps/PTK_Ramp_Medium.fbx
new file mode 100644
index 0000000..cf6f74c
Binary files /dev/null and b/raw-assets/DigitalKonstrukt-Prototyping_Pack_Free/Meshes/Ramps/PTK_Ramp_Medium.fbx differ
diff --git a/raw-assets/DigitalKonstrukt-Prototyping_Pack_Free/Meshes/Ramps/PTK_Ramp_Small.fbx b/raw-assets/DigitalKonstrukt-Prototyping_Pack_Free/Meshes/Ramps/PTK_Ramp_Small.fbx
new file mode 100644
index 0000000..430eaba
Binary files /dev/null and b/raw-assets/DigitalKonstrukt-Prototyping_Pack_Free/Meshes/Ramps/PTK_Ramp_Small.fbx differ
diff --git a/raw-assets/DigitalKonstrukt-Prototyping_Pack_Free/Meshes/Stairs/PTK_Stairs_Large.fbx b/raw-assets/DigitalKonstrukt-Prototyping_Pack_Free/Meshes/Stairs/PTK_Stairs_Large.fbx
new file mode 100644
index 0000000..c246897
Binary files /dev/null and b/raw-assets/DigitalKonstrukt-Prototyping_Pack_Free/Meshes/Stairs/PTK_Stairs_Large.fbx differ
diff --git a/raw-assets/DigitalKonstrukt-Prototyping_Pack_Free/Meshes/Stairs/PTK_Stairs_Medium.fbx b/raw-assets/DigitalKonstrukt-Prototyping_Pack_Free/Meshes/Stairs/PTK_Stairs_Medium.fbx
new file mode 100644
index 0000000..be98e4a
Binary files /dev/null and b/raw-assets/DigitalKonstrukt-Prototyping_Pack_Free/Meshes/Stairs/PTK_Stairs_Medium.fbx differ
diff --git a/raw-assets/DigitalKonstrukt-Prototyping_Pack_Free/Meshes/Stairs/PTK_Stairs_Small.fbx b/raw-assets/DigitalKonstrukt-Prototyping_Pack_Free/Meshes/Stairs/PTK_Stairs_Small.fbx
new file mode 100644
index 0000000..c03a9d0
Binary files /dev/null and b/raw-assets/DigitalKonstrukt-Prototyping_Pack_Free/Meshes/Stairs/PTK_Stairs_Small.fbx differ
diff --git a/raw-assets/DigitalKonstrukt-Prototyping_Pack_Free/Meshes/Walls/PTK_Wall_Large_1.fbx b/raw-assets/DigitalKonstrukt-Prototyping_Pack_Free/Meshes/Walls/PTK_Wall_Large_1.fbx
new file mode 100644
index 0000000..320e70e
Binary files /dev/null and b/raw-assets/DigitalKonstrukt-Prototyping_Pack_Free/Meshes/Walls/PTK_Wall_Large_1.fbx differ
diff --git a/raw-assets/DigitalKonstrukt-Prototyping_Pack_Free/Meshes/Walls/PTK_Wall_Large_2.fbx b/raw-assets/DigitalKonstrukt-Prototyping_Pack_Free/Meshes/Walls/PTK_Wall_Large_2.fbx
new file mode 100644
index 0000000..24ad725
Binary files /dev/null and b/raw-assets/DigitalKonstrukt-Prototyping_Pack_Free/Meshes/Walls/PTK_Wall_Large_2.fbx differ
diff --git a/raw-assets/DigitalKonstrukt-Prototyping_Pack_Free/Meshes/Walls/PTK_Wall_Large_3.fbx b/raw-assets/DigitalKonstrukt-Prototyping_Pack_Free/Meshes/Walls/PTK_Wall_Large_3.fbx
new file mode 100644
index 0000000..bc49c53
Binary files /dev/null and b/raw-assets/DigitalKonstrukt-Prototyping_Pack_Free/Meshes/Walls/PTK_Wall_Large_3.fbx differ
diff --git a/raw-assets/DigitalKonstrukt-Prototyping_Pack_Free/Meshes/Walls/PTK_Wall_Large_4.fbx b/raw-assets/DigitalKonstrukt-Prototyping_Pack_Free/Meshes/Walls/PTK_Wall_Large_4.fbx
new file mode 100644
index 0000000..98161e5
Binary files /dev/null and b/raw-assets/DigitalKonstrukt-Prototyping_Pack_Free/Meshes/Walls/PTK_Wall_Large_4.fbx differ
diff --git a/raw-assets/DigitalKonstrukt-Prototyping_Pack_Free/Meshes/Walls/PTK_Wall_Large_5.fbx b/raw-assets/DigitalKonstrukt-Prototyping_Pack_Free/Meshes/Walls/PTK_Wall_Large_5.fbx
new file mode 100644
index 0000000..600c312
Binary files /dev/null and b/raw-assets/DigitalKonstrukt-Prototyping_Pack_Free/Meshes/Walls/PTK_Wall_Large_5.fbx differ
diff --git a/raw-assets/DigitalKonstrukt-Prototyping_Pack_Free/Meshes/Walls/PTK_Wall_Medium_1.fbx b/raw-assets/DigitalKonstrukt-Prototyping_Pack_Free/Meshes/Walls/PTK_Wall_Medium_1.fbx
new file mode 100644
index 0000000..0b4ae85
Binary files /dev/null and b/raw-assets/DigitalKonstrukt-Prototyping_Pack_Free/Meshes/Walls/PTK_Wall_Medium_1.fbx differ
diff --git a/raw-assets/DigitalKonstrukt-Prototyping_Pack_Free/Meshes/Walls/PTK_Wall_Medium_2.fbx b/raw-assets/DigitalKonstrukt-Prototyping_Pack_Free/Meshes/Walls/PTK_Wall_Medium_2.fbx
new file mode 100644
index 0000000..7536476
Binary files /dev/null and b/raw-assets/DigitalKonstrukt-Prototyping_Pack_Free/Meshes/Walls/PTK_Wall_Medium_2.fbx differ
diff --git a/raw-assets/DigitalKonstrukt-Prototyping_Pack_Free/Meshes/Walls/PTK_Wall_Medium_3.fbx b/raw-assets/DigitalKonstrukt-Prototyping_Pack_Free/Meshes/Walls/PTK_Wall_Medium_3.fbx
new file mode 100644
index 0000000..745ee17
Binary files /dev/null and b/raw-assets/DigitalKonstrukt-Prototyping_Pack_Free/Meshes/Walls/PTK_Wall_Medium_3.fbx differ
diff --git a/raw-assets/DigitalKonstrukt-Prototyping_Pack_Free/Meshes/Walls/PTK_Wall_Medium_4.fbx b/raw-assets/DigitalKonstrukt-Prototyping_Pack_Free/Meshes/Walls/PTK_Wall_Medium_4.fbx
new file mode 100644
index 0000000..505e583
Binary files /dev/null and b/raw-assets/DigitalKonstrukt-Prototyping_Pack_Free/Meshes/Walls/PTK_Wall_Medium_4.fbx differ
diff --git a/raw-assets/DigitalKonstrukt-Prototyping_Pack_Free/Meshes/Walls/PTK_Wall_Medium_5.fbx b/raw-assets/DigitalKonstrukt-Prototyping_Pack_Free/Meshes/Walls/PTK_Wall_Medium_5.fbx
new file mode 100644
index 0000000..135a046
Binary files /dev/null and b/raw-assets/DigitalKonstrukt-Prototyping_Pack_Free/Meshes/Walls/PTK_Wall_Medium_5.fbx differ
diff --git a/raw-assets/DigitalKonstrukt-Prototyping_Pack_Free/Meshes/Walls/PTK_Wall_Small_1.fbx b/raw-assets/DigitalKonstrukt-Prototyping_Pack_Free/Meshes/Walls/PTK_Wall_Small_1.fbx
new file mode 100644
index 0000000..38f3484
Binary files /dev/null and b/raw-assets/DigitalKonstrukt-Prototyping_Pack_Free/Meshes/Walls/PTK_Wall_Small_1.fbx differ
diff --git a/raw-assets/DigitalKonstrukt-Prototyping_Pack_Free/Meshes/Walls/PTK_Wall_Small_2.fbx b/raw-assets/DigitalKonstrukt-Prototyping_Pack_Free/Meshes/Walls/PTK_Wall_Small_2.fbx
new file mode 100644
index 0000000..69562bd
Binary files /dev/null and b/raw-assets/DigitalKonstrukt-Prototyping_Pack_Free/Meshes/Walls/PTK_Wall_Small_2.fbx differ
diff --git a/raw-assets/DigitalKonstrukt-Prototyping_Pack_Free/Meshes/Walls/PTK_Wall_Small_3.fbx b/raw-assets/DigitalKonstrukt-Prototyping_Pack_Free/Meshes/Walls/PTK_Wall_Small_3.fbx
new file mode 100644
index 0000000..911fbdf
Binary files /dev/null and b/raw-assets/DigitalKonstrukt-Prototyping_Pack_Free/Meshes/Walls/PTK_Wall_Small_3.fbx differ
diff --git a/raw-assets/DigitalKonstrukt-Prototyping_Pack_Free/Meshes/Walls/PTK_Wall_Small_4.fbx b/raw-assets/DigitalKonstrukt-Prototyping_Pack_Free/Meshes/Walls/PTK_Wall_Small_4.fbx
new file mode 100644
index 0000000..d68d2f0
Binary files /dev/null and b/raw-assets/DigitalKonstrukt-Prototyping_Pack_Free/Meshes/Walls/PTK_Wall_Small_4.fbx differ
diff --git a/raw-assets/DigitalKonstrukt-Prototyping_Pack_Free/Meshes/Walls/PTK_Wall_Small_5.fbx b/raw-assets/DigitalKonstrukt-Prototyping_Pack_Free/Meshes/Walls/PTK_Wall_Small_5.fbx
new file mode 100644
index 0000000..7a6ae69
Binary files /dev/null and b/raw-assets/DigitalKonstrukt-Prototyping_Pack_Free/Meshes/Walls/PTK_Wall_Small_5.fbx differ
diff --git a/raw-assets/DigitalKonstrukt-Prototyping_Pack_Free/Textures/Proto_1024.png b/raw-assets/DigitalKonstrukt-Prototyping_Pack_Free/Textures/Proto_1024.png
new file mode 100644
index 0000000..abadc8e
Binary files /dev/null and b/raw-assets/DigitalKonstrukt-Prototyping_Pack_Free/Textures/Proto_1024.png differ
diff --git a/raw-assets/DigitalKonstrukt-Prototyping_Pack_Free/Textures/Proto_2_1024.png b/raw-assets/DigitalKonstrukt-Prototyping_Pack_Free/Textures/Proto_2_1024.png
new file mode 100644
index 0000000..7af582a
Binary files /dev/null and b/raw-assets/DigitalKonstrukt-Prototyping_Pack_Free/Textures/Proto_2_1024.png differ
diff --git a/raw-assets/DigitalKonstrukt-Prototyping_Pack_Free/Textures/Proto_2_512.png b/raw-assets/DigitalKonstrukt-Prototyping_Pack_Free/Textures/Proto_2_512.png
new file mode 100644
index 0000000..fdec2cd
Binary files /dev/null and b/raw-assets/DigitalKonstrukt-Prototyping_Pack_Free/Textures/Proto_2_512.png differ
diff --git a/raw-assets/DigitalKonstrukt-Prototyping_Pack_Free/Textures/Proto_512.png b/raw-assets/DigitalKonstrukt-Prototyping_Pack_Free/Textures/Proto_512.png
new file mode 100644
index 0000000..f65b9ae
Binary files /dev/null and b/raw-assets/DigitalKonstrukt-Prototyping_Pack_Free/Textures/Proto_512.png differ
diff --git a/raw-assets/DigitalKonstrukt-Prototyping_Pack_Free/Textures/Proto_grid.png b/raw-assets/DigitalKonstrukt-Prototyping_Pack_Free/Textures/Proto_grid.png
new file mode 100644
index 0000000..1c4347b
Binary files /dev/null and b/raw-assets/DigitalKonstrukt-Prototyping_Pack_Free/Textures/Proto_grid.png differ
diff --git a/raw-assets/DigitalKonstrukt-Prototyping_Pack_Free/Textures/proto_1.png b/raw-assets/DigitalKonstrukt-Prototyping_Pack_Free/Textures/proto_1.png
new file mode 100644
index 0000000..695a733
Binary files /dev/null and b/raw-assets/DigitalKonstrukt-Prototyping_Pack_Free/Textures/proto_1.png differ
diff --git a/raw-assets/DigitalKonstrukt-Prototyping_Pack_Free/Textures/proto_2.png b/raw-assets/DigitalKonstrukt-Prototyping_Pack_Free/Textures/proto_2.png
new file mode 100644
index 0000000..83c3a2d
Binary files /dev/null and b/raw-assets/DigitalKonstrukt-Prototyping_Pack_Free/Textures/proto_2.png differ
diff --git a/raw-assets/DigitalKonstrukt-Prototyping_Pack_Free/Textures/proto_3.png b/raw-assets/DigitalKonstrukt-Prototyping_Pack_Free/Textures/proto_3.png
new file mode 100644
index 0000000..4c08f66
Binary files /dev/null and b/raw-assets/DigitalKonstrukt-Prototyping_Pack_Free/Textures/proto_3.png differ
diff --git a/raw-assets/DigitalKonstrukt-Prototyping_Pack_Free/Textures/proto_interaction.png b/raw-assets/DigitalKonstrukt-Prototyping_Pack_Free/Textures/proto_interaction.png
new file mode 100644
index 0000000..9d42f50
Binary files /dev/null and b/raw-assets/DigitalKonstrukt-Prototyping_Pack_Free/Textures/proto_interaction.png differ
diff --git a/raw-assets/DigitalKonstrukt-Prototyping_Pack_Free/Textures/proto_interaction2.png b/raw-assets/DigitalKonstrukt-Prototyping_Pack_Free/Textures/proto_interaction2.png
new file mode 100644
index 0000000..ea24a9b
Binary files /dev/null and b/raw-assets/DigitalKonstrukt-Prototyping_Pack_Free/Textures/proto_interaction2.png differ
diff --git a/raw-assets/DigitalKonstrukt-Prototyping_Pack_Free/Textures/proto_interaction3.png b/raw-assets/DigitalKonstrukt-Prototyping_Pack_Free/Textures/proto_interaction3.png
new file mode 100644
index 0000000..eaacb21
Binary files /dev/null and b/raw-assets/DigitalKonstrukt-Prototyping_Pack_Free/Textures/proto_interaction3.png differ
diff --git a/raw-assets/DigitalKonstrukt-Prototyping_Pack_Free/Textures/proto_interaction4.png b/raw-assets/DigitalKonstrukt-Prototyping_Pack_Free/Textures/proto_interaction4.png
new file mode 100644
index 0000000..2a786b8
Binary files /dev/null and b/raw-assets/DigitalKonstrukt-Prototyping_Pack_Free/Textures/proto_interaction4.png differ
diff --git a/raw-assets/DigitalKonstrukt-Prototyping_Pack_Free/credits.txt b/raw-assets/DigitalKonstrukt-Prototyping_Pack_Free/credits.txt
new file mode 100644
index 0000000..8109185
--- /dev/null
+++ b/raw-assets/DigitalKonstrukt-Prototyping_Pack_Free/credits.txt
@@ -0,0 +1,4 @@
+taken from Unity Assetstore: https://assetstore.unity.com/packages/3d/prototyping-pack-free-94277
+creator: DigitalKonstrukt
+website: https://www.digitalkonstrukt.com/
+license: https://unity.com/legal/as-terms
diff --git a/raw-assets/GibGames-DevTextures/Collide_Camera.png b/raw-assets/GibGames-DevTextures/Collide_Camera.png
new file mode 100644
index 0000000..5dfb624
Binary files /dev/null and b/raw-assets/GibGames-DevTextures/Collide_Camera.png differ
diff --git a/raw-assets/GibGames-DevTextures/Collide_Handler.png b/raw-assets/GibGames-DevTextures/Collide_Handler.png
new file mode 100644
index 0000000..90815b9
Binary files /dev/null and b/raw-assets/GibGames-DevTextures/Collide_Handler.png differ
diff --git a/raw-assets/GibGames-DevTextures/Collide_Player.png b/raw-assets/GibGames-DevTextures/Collide_Player.png
new file mode 100644
index 0000000..fcc4440
Binary files /dev/null and b/raw-assets/GibGames-DevTextures/Collide_Player.png differ
diff --git a/raw-assets/GibGames-DevTextures/Collide_Scene.png b/raw-assets/GibGames-DevTextures/Collide_Scene.png
new file mode 100644
index 0000000..0729ca9
Binary files /dev/null and b/raw-assets/GibGames-DevTextures/Collide_Scene.png differ
diff --git a/raw-assets/GibGames-DevTextures/Collide_Script.png b/raw-assets/GibGames-DevTextures/Collide_Script.png
new file mode 100644
index 0000000..ed91cf0
Binary files /dev/null and b/raw-assets/GibGames-DevTextures/Collide_Script.png differ
diff --git a/raw-assets/GibGames-DevTextures/Collide_Trigger.png b/raw-assets/GibGames-DevTextures/Collide_Trigger.png
new file mode 100644
index 0000000..2514490
Binary files /dev/null and b/raw-assets/GibGames-DevTextures/Collide_Trigger.png differ
diff --git a/raw-assets/GibGames-DevTextures/Collide_World.png b/raw-assets/GibGames-DevTextures/Collide_World.png
new file mode 100644
index 0000000..451c9c2
Binary files /dev/null and b/raw-assets/GibGames-DevTextures/Collide_World.png differ
diff --git a/raw-assets/GibGames-DevTextures/Prefab_Black.png b/raw-assets/GibGames-DevTextures/Prefab_Black.png
new file mode 100644
index 0000000..8962d70
Binary files /dev/null and b/raw-assets/GibGames-DevTextures/Prefab_Black.png differ
diff --git a/raw-assets/GibGames-DevTextures/Prefab_Grey25.png b/raw-assets/GibGames-DevTextures/Prefab_Grey25.png
new file mode 100644
index 0000000..0b7f5b8
Binary files /dev/null and b/raw-assets/GibGames-DevTextures/Prefab_Grey25.png differ
diff --git a/raw-assets/GibGames-DevTextures/Prefab_Grey50.png b/raw-assets/GibGames-DevTextures/Prefab_Grey50.png
new file mode 100644
index 0000000..33f25fe
Binary files /dev/null and b/raw-assets/GibGames-DevTextures/Prefab_Grey50.png differ
diff --git a/raw-assets/GibGames-DevTextures/Prefab_Grey75.png b/raw-assets/GibGames-DevTextures/Prefab_Grey75.png
new file mode 100644
index 0000000..a945b0c
Binary files /dev/null and b/raw-assets/GibGames-DevTextures/Prefab_Grey75.png differ
diff --git a/raw-assets/GibGames-DevTextures/Prefab_Metal_100.png b/raw-assets/GibGames-DevTextures/Prefab_Metal_100.png
new file mode 100644
index 0000000..4d61ac1
Binary files /dev/null and b/raw-assets/GibGames-DevTextures/Prefab_Metal_100.png differ
diff --git a/raw-assets/GibGames-DevTextures/Prefab_Ref_a.png b/raw-assets/GibGames-DevTextures/Prefab_Ref_a.png
new file mode 100644
index 0000000..faf672d
Binary files /dev/null and b/raw-assets/GibGames-DevTextures/Prefab_Ref_a.png differ
diff --git a/raw-assets/GibGames-DevTextures/Prefab_Ref_m.png b/raw-assets/GibGames-DevTextures/Prefab_Ref_m.png
new file mode 100644
index 0000000..f0f40f3
Binary files /dev/null and b/raw-assets/GibGames-DevTextures/Prefab_Ref_m.png differ
diff --git a/raw-assets/GibGames-DevTextures/Prefab_Ref_m7.png b/raw-assets/GibGames-DevTextures/Prefab_Ref_m7.png
new file mode 100644
index 0000000..88a71dd
Binary files /dev/null and b/raw-assets/GibGames-DevTextures/Prefab_Ref_m7.png differ
diff --git a/raw-assets/GibGames-DevTextures/Prefab_Ref_m8.png b/raw-assets/GibGames-DevTextures/Prefab_Ref_m8.png
new file mode 100644
index 0000000..5e7e22d
Binary files /dev/null and b/raw-assets/GibGames-DevTextures/Prefab_Ref_m8.png differ
diff --git a/raw-assets/GibGames-DevTextures/Prefab_Ref_m9.png b/raw-assets/GibGames-DevTextures/Prefab_Ref_m9.png
new file mode 100644
index 0000000..9e86999
Binary files /dev/null and b/raw-assets/GibGames-DevTextures/Prefab_Ref_m9.png differ
diff --git a/raw-assets/GibGames-DevTextures/Prefab_White.png b/raw-assets/GibGames-DevTextures/Prefab_White.png
new file mode 100644
index 0000000..5fddb09
Binary files /dev/null and b/raw-assets/GibGames-DevTextures/Prefab_White.png differ
diff --git a/raw-assets/GibGames-DevTextures/Prefab_blue.png b/raw-assets/GibGames-DevTextures/Prefab_blue.png
new file mode 100644
index 0000000..b486036
Binary files /dev/null and b/raw-assets/GibGames-DevTextures/Prefab_blue.png differ
diff --git a/raw-assets/GibGames-DevTextures/Prefab_green.png b/raw-assets/GibGames-DevTextures/Prefab_green.png
new file mode 100644
index 0000000..9dffb99
Binary files /dev/null and b/raw-assets/GibGames-DevTextures/Prefab_green.png differ
diff --git a/raw-assets/GibGames-DevTextures/Prefab_grey.png b/raw-assets/GibGames-DevTextures/Prefab_grey.png
new file mode 100644
index 0000000..9e02fdd
Binary files /dev/null and b/raw-assets/GibGames-DevTextures/Prefab_grey.png differ
diff --git a/raw-assets/GibGames-DevTextures/Prefab_orange.png b/raw-assets/GibGames-DevTextures/Prefab_orange.png
new file mode 100644
index 0000000..c65270c
Binary files /dev/null and b/raw-assets/GibGames-DevTextures/Prefab_orange.png differ
diff --git a/raw-assets/GibGames-DevTextures/Prefab_purple.png b/raw-assets/GibGames-DevTextures/Prefab_purple.png
new file mode 100644
index 0000000..e6ef83d
Binary files /dev/null and b/raw-assets/GibGames-DevTextures/Prefab_purple.png differ
diff --git a/raw-assets/GibGames-DevTextures/Prefab_red.png b/raw-assets/GibGames-DevTextures/Prefab_red.png
new file mode 100644
index 0000000..6d659a1
Binary files /dev/null and b/raw-assets/GibGames-DevTextures/Prefab_red.png differ
diff --git a/raw-assets/GibGames-DevTextures/Prefab_tan.png b/raw-assets/GibGames-DevTextures/Prefab_tan.png
new file mode 100644
index 0000000..67849eb
Binary files /dev/null and b/raw-assets/GibGames-DevTextures/Prefab_tan.png differ
diff --git a/raw-assets/GibGames-DevTextures/Prefab_yellow.png b/raw-assets/GibGames-DevTextures/Prefab_yellow.png
new file mode 100644
index 0000000..e6bcf03
Binary files /dev/null and b/raw-assets/GibGames-DevTextures/Prefab_yellow.png differ
diff --git a/raw-assets/GibGames-DevTextures/Small_Audio.png b/raw-assets/GibGames-DevTextures/Small_Audio.png
new file mode 100644
index 0000000..cf11eab
Binary files /dev/null and b/raw-assets/GibGames-DevTextures/Small_Audio.png differ
diff --git a/raw-assets/GibGames-DevTextures/Small_Listener.png b/raw-assets/GibGames-DevTextures/Small_Listener.png
new file mode 100644
index 0000000..b4d07b8
Binary files /dev/null and b/raw-assets/GibGames-DevTextures/Small_Listener.png differ
diff --git a/raw-assets/GibGames-DevTextures/Small_Look.png b/raw-assets/GibGames-DevTextures/Small_Look.png
new file mode 100644
index 0000000..b73d481
Binary files /dev/null and b/raw-assets/GibGames-DevTextures/Small_Look.png differ
diff --git a/raw-assets/GibGames-DevTextures/Small_Target.png b/raw-assets/GibGames-DevTextures/Small_Target.png
new file mode 100644
index 0000000..c89095b
Binary files /dev/null and b/raw-assets/GibGames-DevTextures/Small_Target.png differ
diff --git a/raw-assets/GibGames-DevTextures/Small_way.png b/raw-assets/GibGames-DevTextures/Small_way.png
new file mode 100644
index 0000000..bd737f5
Binary files /dev/null and b/raw-assets/GibGames-DevTextures/Small_way.png differ
diff --git a/raw-assets/GibGames-DevTextures/Solid_NoRender.png b/raw-assets/GibGames-DevTextures/Solid_NoRender.png
new file mode 100644
index 0000000..313101f
Binary files /dev/null and b/raw-assets/GibGames-DevTextures/Solid_NoRender.png differ
diff --git a/raw-assets/GibGames-DevTextures/Solid_Region.png b/raw-assets/GibGames-DevTextures/Solid_Region.png
new file mode 100644
index 0000000..5219609
Binary files /dev/null and b/raw-assets/GibGames-DevTextures/Solid_Region.png differ
diff --git a/raw-assets/GibGames-DevTextures/Solid_SkyBox.png b/raw-assets/GibGames-DevTextures/Solid_SkyBox.png
new file mode 100644
index 0000000..71f7684
Binary files /dev/null and b/raw-assets/GibGames-DevTextures/Solid_SkyBox.png differ
diff --git a/raw-assets/GibGames-DevTextures/Zone_Hurt.png b/raw-assets/GibGames-DevTextures/Zone_Hurt.png
new file mode 100644
index 0000000..0d97e8c
Binary files /dev/null and b/raw-assets/GibGames-DevTextures/Zone_Hurt.png differ
diff --git a/raw-assets/GibGames-DevTextures/Zone_spawn.png b/raw-assets/GibGames-DevTextures/Zone_spawn.png
new file mode 100644
index 0000000..25d1cc5
Binary files /dev/null and b/raw-assets/GibGames-DevTextures/Zone_spawn.png differ
diff --git a/raw-assets/GibGames-DevTextures/links.txt b/raw-assets/GibGames-DevTextures/links.txt
new file mode 100644
index 0000000..1adff9b
--- /dev/null
+++ b/raw-assets/GibGames-DevTextures/links.txt
@@ -0,0 +1,4 @@
+taken from Unity Assetstore: https://assetstore.unity.com/packages/2d/textures-materials/devtex-prototyping-textures-176107
+creator: GIB Games
+website: https://gib.games/
+license: https://unity.com/legal/as-terms
diff --git a/raw-assets/kenney_prototype-textures/Kenney.url b/raw-assets/kenney_prototype-textures/Kenney.url
new file mode 100644
index 0000000..c220c41
--- /dev/null
+++ b/raw-assets/kenney_prototype-textures/Kenney.url
@@ -0,0 +1,2 @@
+[InternetShortcut]
+URL=http://www.kenney.nl/
\ No newline at end of file
diff --git a/raw-assets/kenney_prototype-textures/License.txt b/raw-assets/kenney_prototype-textures/License.txt
new file mode 100644
index 0000000..bda3f93
--- /dev/null
+++ b/raw-assets/kenney_prototype-textures/License.txt
@@ -0,0 +1,23 @@
+
+
+ Prototype Textures 1.0
+
+ Created/distributed by Kenney (www.kenney.nl)
+ Creation date: 08-04-2020
+
+ ------------------------------
+
+ License: (Creative Commons Zero, CC0)
+ http://creativecommons.org/publicdomain/zero/1.0/
+
+ This content is free to use in personal, educational and commercial projects.
+ Support us by crediting Kenney or www.kenney.nl (this is not mandatory)
+
+ ------------------------------
+
+ Donate: http://support.kenney.nl
+ Request: http://request.kenney.nl
+ Patreon: http://patreon.com/kenney/
+
+ Follow on Twitter for updates:
+ http://twitter.com/KenneyNL
\ No newline at end of file
diff --git a/raw-assets/kenney_prototype-textures/PNG/Dark/texture_01.png b/raw-assets/kenney_prototype-textures/PNG/Dark/texture_01.png
new file mode 100644
index 0000000..69be211
Binary files /dev/null and b/raw-assets/kenney_prototype-textures/PNG/Dark/texture_01.png differ
diff --git a/raw-assets/kenney_prototype-textures/PNG/Dark/texture_02.png b/raw-assets/kenney_prototype-textures/PNG/Dark/texture_02.png
new file mode 100644
index 0000000..6fb471b
Binary files /dev/null and b/raw-assets/kenney_prototype-textures/PNG/Dark/texture_02.png differ
diff --git a/raw-assets/kenney_prototype-textures/PNG/Dark/texture_03.png b/raw-assets/kenney_prototype-textures/PNG/Dark/texture_03.png
new file mode 100644
index 0000000..3f8b186
Binary files /dev/null and b/raw-assets/kenney_prototype-textures/PNG/Dark/texture_03.png differ
diff --git a/raw-assets/kenney_prototype-textures/PNG/Dark/texture_04.png b/raw-assets/kenney_prototype-textures/PNG/Dark/texture_04.png
new file mode 100644
index 0000000..e2bc22b
Binary files /dev/null and b/raw-assets/kenney_prototype-textures/PNG/Dark/texture_04.png differ
diff --git a/raw-assets/kenney_prototype-textures/PNG/Dark/texture_05.png b/raw-assets/kenney_prototype-textures/PNG/Dark/texture_05.png
new file mode 100644
index 0000000..3fd2e56
Binary files /dev/null and b/raw-assets/kenney_prototype-textures/PNG/Dark/texture_05.png differ
diff --git a/raw-assets/kenney_prototype-textures/PNG/Dark/texture_06.png b/raw-assets/kenney_prototype-textures/PNG/Dark/texture_06.png
new file mode 100644
index 0000000..45d4a34
Binary files /dev/null and b/raw-assets/kenney_prototype-textures/PNG/Dark/texture_06.png differ
diff --git a/raw-assets/kenney_prototype-textures/PNG/Dark/texture_07.png b/raw-assets/kenney_prototype-textures/PNG/Dark/texture_07.png
new file mode 100644
index 0000000..adf5e6f
Binary files /dev/null and b/raw-assets/kenney_prototype-textures/PNG/Dark/texture_07.png differ
diff --git a/raw-assets/kenney_prototype-textures/PNG/Dark/texture_08.png b/raw-assets/kenney_prototype-textures/PNG/Dark/texture_08.png
new file mode 100644
index 0000000..a5a9f24
Binary files /dev/null and b/raw-assets/kenney_prototype-textures/PNG/Dark/texture_08.png differ
diff --git a/raw-assets/kenney_prototype-textures/PNG/Dark/texture_09.png b/raw-assets/kenney_prototype-textures/PNG/Dark/texture_09.png
new file mode 100644
index 0000000..57cc607
Binary files /dev/null and b/raw-assets/kenney_prototype-textures/PNG/Dark/texture_09.png differ
diff --git a/raw-assets/kenney_prototype-textures/PNG/Dark/texture_10.png b/raw-assets/kenney_prototype-textures/PNG/Dark/texture_10.png
new file mode 100644
index 0000000..4c737d0
Binary files /dev/null and b/raw-assets/kenney_prototype-textures/PNG/Dark/texture_10.png differ
diff --git a/raw-assets/kenney_prototype-textures/PNG/Dark/texture_11.png b/raw-assets/kenney_prototype-textures/PNG/Dark/texture_11.png
new file mode 100644
index 0000000..424ba71
Binary files /dev/null and b/raw-assets/kenney_prototype-textures/PNG/Dark/texture_11.png differ
diff --git a/raw-assets/kenney_prototype-textures/PNG/Dark/texture_12.png b/raw-assets/kenney_prototype-textures/PNG/Dark/texture_12.png
new file mode 100644
index 0000000..32169db
Binary files /dev/null and b/raw-assets/kenney_prototype-textures/PNG/Dark/texture_12.png differ
diff --git a/raw-assets/kenney_prototype-textures/PNG/Dark/texture_13.png b/raw-assets/kenney_prototype-textures/PNG/Dark/texture_13.png
new file mode 100644
index 0000000..13c4388
Binary files /dev/null and b/raw-assets/kenney_prototype-textures/PNG/Dark/texture_13.png differ
diff --git a/raw-assets/kenney_prototype-textures/PNG/Green/texture_01.png b/raw-assets/kenney_prototype-textures/PNG/Green/texture_01.png
new file mode 100644
index 0000000..d576514
Binary files /dev/null and b/raw-assets/kenney_prototype-textures/PNG/Green/texture_01.png differ
diff --git a/raw-assets/kenney_prototype-textures/PNG/Green/texture_02.png b/raw-assets/kenney_prototype-textures/PNG/Green/texture_02.png
new file mode 100644
index 0000000..7bc7cf8
Binary files /dev/null and b/raw-assets/kenney_prototype-textures/PNG/Green/texture_02.png differ
diff --git a/raw-assets/kenney_prototype-textures/PNG/Green/texture_03.png b/raw-assets/kenney_prototype-textures/PNG/Green/texture_03.png
new file mode 100644
index 0000000..e2a3889
Binary files /dev/null and b/raw-assets/kenney_prototype-textures/PNG/Green/texture_03.png differ
diff --git a/raw-assets/kenney_prototype-textures/PNG/Green/texture_04.png b/raw-assets/kenney_prototype-textures/PNG/Green/texture_04.png
new file mode 100644
index 0000000..3952bef
Binary files /dev/null and b/raw-assets/kenney_prototype-textures/PNG/Green/texture_04.png differ
diff --git a/raw-assets/kenney_prototype-textures/PNG/Green/texture_05.png b/raw-assets/kenney_prototype-textures/PNG/Green/texture_05.png
new file mode 100644
index 0000000..84976ba
Binary files /dev/null and b/raw-assets/kenney_prototype-textures/PNG/Green/texture_05.png differ
diff --git a/raw-assets/kenney_prototype-textures/PNG/Green/texture_06.png b/raw-assets/kenney_prototype-textures/PNG/Green/texture_06.png
new file mode 100644
index 0000000..1128198
Binary files /dev/null and b/raw-assets/kenney_prototype-textures/PNG/Green/texture_06.png differ
diff --git a/raw-assets/kenney_prototype-textures/PNG/Green/texture_07.png b/raw-assets/kenney_prototype-textures/PNG/Green/texture_07.png
new file mode 100644
index 0000000..3160860
Binary files /dev/null and b/raw-assets/kenney_prototype-textures/PNG/Green/texture_07.png differ
diff --git a/raw-assets/kenney_prototype-textures/PNG/Green/texture_08.png b/raw-assets/kenney_prototype-textures/PNG/Green/texture_08.png
new file mode 100644
index 0000000..386293d
Binary files /dev/null and b/raw-assets/kenney_prototype-textures/PNG/Green/texture_08.png differ
diff --git a/raw-assets/kenney_prototype-textures/PNG/Green/texture_09.png b/raw-assets/kenney_prototype-textures/PNG/Green/texture_09.png
new file mode 100644
index 0000000..48234f6
Binary files /dev/null and b/raw-assets/kenney_prototype-textures/PNG/Green/texture_09.png differ
diff --git a/raw-assets/kenney_prototype-textures/PNG/Green/texture_10.png b/raw-assets/kenney_prototype-textures/PNG/Green/texture_10.png
new file mode 100644
index 0000000..e4ab057
Binary files /dev/null and b/raw-assets/kenney_prototype-textures/PNG/Green/texture_10.png differ
diff --git a/raw-assets/kenney_prototype-textures/PNG/Green/texture_11.png b/raw-assets/kenney_prototype-textures/PNG/Green/texture_11.png
new file mode 100644
index 0000000..82ad458
Binary files /dev/null and b/raw-assets/kenney_prototype-textures/PNG/Green/texture_11.png differ
diff --git a/raw-assets/kenney_prototype-textures/PNG/Green/texture_12.png b/raw-assets/kenney_prototype-textures/PNG/Green/texture_12.png
new file mode 100644
index 0000000..a15000d
Binary files /dev/null and b/raw-assets/kenney_prototype-textures/PNG/Green/texture_12.png differ
diff --git a/raw-assets/kenney_prototype-textures/PNG/Green/texture_13.png b/raw-assets/kenney_prototype-textures/PNG/Green/texture_13.png
new file mode 100644
index 0000000..930fdf0
Binary files /dev/null and b/raw-assets/kenney_prototype-textures/PNG/Green/texture_13.png differ
diff --git a/raw-assets/kenney_prototype-textures/PNG/Light/texture_01.png b/raw-assets/kenney_prototype-textures/PNG/Light/texture_01.png
new file mode 100644
index 0000000..60b632b
Binary files /dev/null and b/raw-assets/kenney_prototype-textures/PNG/Light/texture_01.png differ
diff --git a/raw-assets/kenney_prototype-textures/PNG/Light/texture_02.png b/raw-assets/kenney_prototype-textures/PNG/Light/texture_02.png
new file mode 100644
index 0000000..19aad62
Binary files /dev/null and b/raw-assets/kenney_prototype-textures/PNG/Light/texture_02.png differ
diff --git a/raw-assets/kenney_prototype-textures/PNG/Light/texture_03.png b/raw-assets/kenney_prototype-textures/PNG/Light/texture_03.png
new file mode 100644
index 0000000..a8a6c06
Binary files /dev/null and b/raw-assets/kenney_prototype-textures/PNG/Light/texture_03.png differ
diff --git a/raw-assets/kenney_prototype-textures/PNG/Light/texture_04.png b/raw-assets/kenney_prototype-textures/PNG/Light/texture_04.png
new file mode 100644
index 0000000..b8270e1
Binary files /dev/null and b/raw-assets/kenney_prototype-textures/PNG/Light/texture_04.png differ
diff --git a/raw-assets/kenney_prototype-textures/PNG/Light/texture_05.png b/raw-assets/kenney_prototype-textures/PNG/Light/texture_05.png
new file mode 100644
index 0000000..5b985bf
Binary files /dev/null and b/raw-assets/kenney_prototype-textures/PNG/Light/texture_05.png differ
diff --git a/raw-assets/kenney_prototype-textures/PNG/Light/texture_06.png b/raw-assets/kenney_prototype-textures/PNG/Light/texture_06.png
new file mode 100644
index 0000000..195ad77
Binary files /dev/null and b/raw-assets/kenney_prototype-textures/PNG/Light/texture_06.png differ
diff --git a/raw-assets/kenney_prototype-textures/PNG/Light/texture_07.png b/raw-assets/kenney_prototype-textures/PNG/Light/texture_07.png
new file mode 100644
index 0000000..fbf92e0
Binary files /dev/null and b/raw-assets/kenney_prototype-textures/PNG/Light/texture_07.png differ
diff --git a/raw-assets/kenney_prototype-textures/PNG/Light/texture_08.png b/raw-assets/kenney_prototype-textures/PNG/Light/texture_08.png
new file mode 100644
index 0000000..72e1a07
Binary files /dev/null and b/raw-assets/kenney_prototype-textures/PNG/Light/texture_08.png differ
diff --git a/raw-assets/kenney_prototype-textures/PNG/Light/texture_09.png b/raw-assets/kenney_prototype-textures/PNG/Light/texture_09.png
new file mode 100644
index 0000000..9ada5dd
Binary files /dev/null and b/raw-assets/kenney_prototype-textures/PNG/Light/texture_09.png differ
diff --git a/raw-assets/kenney_prototype-textures/PNG/Light/texture_10.png b/raw-assets/kenney_prototype-textures/PNG/Light/texture_10.png
new file mode 100644
index 0000000..4fbcc80
Binary files /dev/null and b/raw-assets/kenney_prototype-textures/PNG/Light/texture_10.png differ
diff --git a/raw-assets/kenney_prototype-textures/PNG/Light/texture_11.png b/raw-assets/kenney_prototype-textures/PNG/Light/texture_11.png
new file mode 100644
index 0000000..840ecec
Binary files /dev/null and b/raw-assets/kenney_prototype-textures/PNG/Light/texture_11.png differ
diff --git a/raw-assets/kenney_prototype-textures/PNG/Light/texture_12.png b/raw-assets/kenney_prototype-textures/PNG/Light/texture_12.png
new file mode 100644
index 0000000..25c2e78
Binary files /dev/null and b/raw-assets/kenney_prototype-textures/PNG/Light/texture_12.png differ
diff --git a/raw-assets/kenney_prototype-textures/PNG/Light/texture_13.png b/raw-assets/kenney_prototype-textures/PNG/Light/texture_13.png
new file mode 100644
index 0000000..a235965
Binary files /dev/null and b/raw-assets/kenney_prototype-textures/PNG/Light/texture_13.png differ
diff --git a/raw-assets/kenney_prototype-textures/PNG/Orange/texture_01.png b/raw-assets/kenney_prototype-textures/PNG/Orange/texture_01.png
new file mode 100644
index 0000000..4f5bf92
Binary files /dev/null and b/raw-assets/kenney_prototype-textures/PNG/Orange/texture_01.png differ
diff --git a/raw-assets/kenney_prototype-textures/PNG/Orange/texture_02.png b/raw-assets/kenney_prototype-textures/PNG/Orange/texture_02.png
new file mode 100644
index 0000000..dec5b59
Binary files /dev/null and b/raw-assets/kenney_prototype-textures/PNG/Orange/texture_02.png differ
diff --git a/raw-assets/kenney_prototype-textures/PNG/Orange/texture_03.png b/raw-assets/kenney_prototype-textures/PNG/Orange/texture_03.png
new file mode 100644
index 0000000..666197f
Binary files /dev/null and b/raw-assets/kenney_prototype-textures/PNG/Orange/texture_03.png differ
diff --git a/raw-assets/kenney_prototype-textures/PNG/Orange/texture_04.png b/raw-assets/kenney_prototype-textures/PNG/Orange/texture_04.png
new file mode 100644
index 0000000..23d6fc4
Binary files /dev/null and b/raw-assets/kenney_prototype-textures/PNG/Orange/texture_04.png differ
diff --git a/raw-assets/kenney_prototype-textures/PNG/Orange/texture_05.png b/raw-assets/kenney_prototype-textures/PNG/Orange/texture_05.png
new file mode 100644
index 0000000..1e0448a
Binary files /dev/null and b/raw-assets/kenney_prototype-textures/PNG/Orange/texture_05.png differ
diff --git a/raw-assets/kenney_prototype-textures/PNG/Orange/texture_06.png b/raw-assets/kenney_prototype-textures/PNG/Orange/texture_06.png
new file mode 100644
index 0000000..5486825
Binary files /dev/null and b/raw-assets/kenney_prototype-textures/PNG/Orange/texture_06.png differ
diff --git a/raw-assets/kenney_prototype-textures/PNG/Orange/texture_07.png b/raw-assets/kenney_prototype-textures/PNG/Orange/texture_07.png
new file mode 100644
index 0000000..95f2790
Binary files /dev/null and b/raw-assets/kenney_prototype-textures/PNG/Orange/texture_07.png differ
diff --git a/raw-assets/kenney_prototype-textures/PNG/Orange/texture_08.png b/raw-assets/kenney_prototype-textures/PNG/Orange/texture_08.png
new file mode 100644
index 0000000..5a500d9
Binary files /dev/null and b/raw-assets/kenney_prototype-textures/PNG/Orange/texture_08.png differ
diff --git a/raw-assets/kenney_prototype-textures/PNG/Orange/texture_09.png b/raw-assets/kenney_prototype-textures/PNG/Orange/texture_09.png
new file mode 100644
index 0000000..adcfa33
Binary files /dev/null and b/raw-assets/kenney_prototype-textures/PNG/Orange/texture_09.png differ
diff --git a/raw-assets/kenney_prototype-textures/PNG/Orange/texture_10.png b/raw-assets/kenney_prototype-textures/PNG/Orange/texture_10.png
new file mode 100644
index 0000000..aa227e5
Binary files /dev/null and b/raw-assets/kenney_prototype-textures/PNG/Orange/texture_10.png differ
diff --git a/raw-assets/kenney_prototype-textures/PNG/Orange/texture_11.png b/raw-assets/kenney_prototype-textures/PNG/Orange/texture_11.png
new file mode 100644
index 0000000..dc94567
Binary files /dev/null and b/raw-assets/kenney_prototype-textures/PNG/Orange/texture_11.png differ
diff --git a/raw-assets/kenney_prototype-textures/PNG/Orange/texture_12.png b/raw-assets/kenney_prototype-textures/PNG/Orange/texture_12.png
new file mode 100644
index 0000000..b730544
Binary files /dev/null and b/raw-assets/kenney_prototype-textures/PNG/Orange/texture_12.png differ
diff --git a/raw-assets/kenney_prototype-textures/PNG/Orange/texture_13.png b/raw-assets/kenney_prototype-textures/PNG/Orange/texture_13.png
new file mode 100644
index 0000000..01f4aa8
Binary files /dev/null and b/raw-assets/kenney_prototype-textures/PNG/Orange/texture_13.png differ
diff --git a/raw-assets/kenney_prototype-textures/PNG/Purple/texture_01.png b/raw-assets/kenney_prototype-textures/PNG/Purple/texture_01.png
new file mode 100644
index 0000000..d501875
Binary files /dev/null and b/raw-assets/kenney_prototype-textures/PNG/Purple/texture_01.png differ
diff --git a/raw-assets/kenney_prototype-textures/PNG/Purple/texture_02.png b/raw-assets/kenney_prototype-textures/PNG/Purple/texture_02.png
new file mode 100644
index 0000000..48a51c1
Binary files /dev/null and b/raw-assets/kenney_prototype-textures/PNG/Purple/texture_02.png differ
diff --git a/raw-assets/kenney_prototype-textures/PNG/Purple/texture_03.png b/raw-assets/kenney_prototype-textures/PNG/Purple/texture_03.png
new file mode 100644
index 0000000..5f97f24
Binary files /dev/null and b/raw-assets/kenney_prototype-textures/PNG/Purple/texture_03.png differ
diff --git a/raw-assets/kenney_prototype-textures/PNG/Purple/texture_04.png b/raw-assets/kenney_prototype-textures/PNG/Purple/texture_04.png
new file mode 100644
index 0000000..b81951c
Binary files /dev/null and b/raw-assets/kenney_prototype-textures/PNG/Purple/texture_04.png differ
diff --git a/raw-assets/kenney_prototype-textures/PNG/Purple/texture_05.png b/raw-assets/kenney_prototype-textures/PNG/Purple/texture_05.png
new file mode 100644
index 0000000..52352c8
Binary files /dev/null and b/raw-assets/kenney_prototype-textures/PNG/Purple/texture_05.png differ
diff --git a/raw-assets/kenney_prototype-textures/PNG/Purple/texture_06.png b/raw-assets/kenney_prototype-textures/PNG/Purple/texture_06.png
new file mode 100644
index 0000000..86deeb3
Binary files /dev/null and b/raw-assets/kenney_prototype-textures/PNG/Purple/texture_06.png differ
diff --git a/raw-assets/kenney_prototype-textures/PNG/Purple/texture_07.png b/raw-assets/kenney_prototype-textures/PNG/Purple/texture_07.png
new file mode 100644
index 0000000..b71ce4e
Binary files /dev/null and b/raw-assets/kenney_prototype-textures/PNG/Purple/texture_07.png differ
diff --git a/raw-assets/kenney_prototype-textures/PNG/Purple/texture_08.png b/raw-assets/kenney_prototype-textures/PNG/Purple/texture_08.png
new file mode 100644
index 0000000..470cc5c
Binary files /dev/null and b/raw-assets/kenney_prototype-textures/PNG/Purple/texture_08.png differ
diff --git a/raw-assets/kenney_prototype-textures/PNG/Purple/texture_09.png b/raw-assets/kenney_prototype-textures/PNG/Purple/texture_09.png
new file mode 100644
index 0000000..4a3f689
Binary files /dev/null and b/raw-assets/kenney_prototype-textures/PNG/Purple/texture_09.png differ
diff --git a/raw-assets/kenney_prototype-textures/PNG/Purple/texture_10.png b/raw-assets/kenney_prototype-textures/PNG/Purple/texture_10.png
new file mode 100644
index 0000000..ab7e84b
Binary files /dev/null and b/raw-assets/kenney_prototype-textures/PNG/Purple/texture_10.png differ
diff --git a/raw-assets/kenney_prototype-textures/PNG/Purple/texture_11.png b/raw-assets/kenney_prototype-textures/PNG/Purple/texture_11.png
new file mode 100644
index 0000000..ad7bebc
Binary files /dev/null and b/raw-assets/kenney_prototype-textures/PNG/Purple/texture_11.png differ
diff --git a/raw-assets/kenney_prototype-textures/PNG/Purple/texture_12.png b/raw-assets/kenney_prototype-textures/PNG/Purple/texture_12.png
new file mode 100644
index 0000000..979ac5a
Binary files /dev/null and b/raw-assets/kenney_prototype-textures/PNG/Purple/texture_12.png differ
diff --git a/raw-assets/kenney_prototype-textures/PNG/Purple/texture_13.png b/raw-assets/kenney_prototype-textures/PNG/Purple/texture_13.png
new file mode 100644
index 0000000..2a9df22
Binary files /dev/null and b/raw-assets/kenney_prototype-textures/PNG/Purple/texture_13.png differ
diff --git a/raw-assets/kenney_prototype-textures/PNG/Red/texture_01.png b/raw-assets/kenney_prototype-textures/PNG/Red/texture_01.png
new file mode 100644
index 0000000..1aaab41
Binary files /dev/null and b/raw-assets/kenney_prototype-textures/PNG/Red/texture_01.png differ
diff --git a/raw-assets/kenney_prototype-textures/PNG/Red/texture_02.png b/raw-assets/kenney_prototype-textures/PNG/Red/texture_02.png
new file mode 100644
index 0000000..bf1cb17
Binary files /dev/null and b/raw-assets/kenney_prototype-textures/PNG/Red/texture_02.png differ
diff --git a/raw-assets/kenney_prototype-textures/PNG/Red/texture_03.png b/raw-assets/kenney_prototype-textures/PNG/Red/texture_03.png
new file mode 100644
index 0000000..ff09c22
Binary files /dev/null and b/raw-assets/kenney_prototype-textures/PNG/Red/texture_03.png differ
diff --git a/raw-assets/kenney_prototype-textures/PNG/Red/texture_04.png b/raw-assets/kenney_prototype-textures/PNG/Red/texture_04.png
new file mode 100644
index 0000000..b5b77ff
Binary files /dev/null and b/raw-assets/kenney_prototype-textures/PNG/Red/texture_04.png differ
diff --git a/raw-assets/kenney_prototype-textures/PNG/Red/texture_05.png b/raw-assets/kenney_prototype-textures/PNG/Red/texture_05.png
new file mode 100644
index 0000000..7827035
Binary files /dev/null and b/raw-assets/kenney_prototype-textures/PNG/Red/texture_05.png differ
diff --git a/raw-assets/kenney_prototype-textures/PNG/Red/texture_06.png b/raw-assets/kenney_prototype-textures/PNG/Red/texture_06.png
new file mode 100644
index 0000000..914a6f1
Binary files /dev/null and b/raw-assets/kenney_prototype-textures/PNG/Red/texture_06.png differ
diff --git a/raw-assets/kenney_prototype-textures/PNG/Red/texture_07.png b/raw-assets/kenney_prototype-textures/PNG/Red/texture_07.png
new file mode 100644
index 0000000..47d517b
Binary files /dev/null and b/raw-assets/kenney_prototype-textures/PNG/Red/texture_07.png differ
diff --git a/raw-assets/kenney_prototype-textures/PNG/Red/texture_08.png b/raw-assets/kenney_prototype-textures/PNG/Red/texture_08.png
new file mode 100644
index 0000000..07cfc41
Binary files /dev/null and b/raw-assets/kenney_prototype-textures/PNG/Red/texture_08.png differ
diff --git a/raw-assets/kenney_prototype-textures/PNG/Red/texture_09.png b/raw-assets/kenney_prototype-textures/PNG/Red/texture_09.png
new file mode 100644
index 0000000..86d67d8
Binary files /dev/null and b/raw-assets/kenney_prototype-textures/PNG/Red/texture_09.png differ
diff --git a/raw-assets/kenney_prototype-textures/PNG/Red/texture_10.png b/raw-assets/kenney_prototype-textures/PNG/Red/texture_10.png
new file mode 100644
index 0000000..a9266d1
Binary files /dev/null and b/raw-assets/kenney_prototype-textures/PNG/Red/texture_10.png differ
diff --git a/raw-assets/kenney_prototype-textures/PNG/Red/texture_11.png b/raw-assets/kenney_prototype-textures/PNG/Red/texture_11.png
new file mode 100644
index 0000000..2acc544
Binary files /dev/null and b/raw-assets/kenney_prototype-textures/PNG/Red/texture_11.png differ
diff --git a/raw-assets/kenney_prototype-textures/PNG/Red/texture_12.png b/raw-assets/kenney_prototype-textures/PNG/Red/texture_12.png
new file mode 100644
index 0000000..7054c4d
Binary files /dev/null and b/raw-assets/kenney_prototype-textures/PNG/Red/texture_12.png differ
diff --git a/raw-assets/kenney_prototype-textures/PNG/Red/texture_13.png b/raw-assets/kenney_prototype-textures/PNG/Red/texture_13.png
new file mode 100644
index 0000000..ab8c7b9
Binary files /dev/null and b/raw-assets/kenney_prototype-textures/PNG/Red/texture_13.png differ
diff --git a/raw-assets/kenney_prototype-textures/Patreon.url b/raw-assets/kenney_prototype-textures/Patreon.url
new file mode 100644
index 0000000..67e9ea5
--- /dev/null
+++ b/raw-assets/kenney_prototype-textures/Patreon.url
@@ -0,0 +1,2 @@
+[InternetShortcut]
+URL=https://www.patreon.com/kenney/
\ No newline at end of file
diff --git a/raw-assets/kenney_prototype-textures/Preview.png b/raw-assets/kenney_prototype-textures/Preview.png
new file mode 100644
index 0000000..148cbd8
Binary files /dev/null and b/raw-assets/kenney_prototype-textures/Preview.png differ
diff --git a/raw-assets/kenney_prototype-textures/Sample.png b/raw-assets/kenney_prototype-textures/Sample.png
new file mode 100644
index 0000000..5699163
Binary files /dev/null and b/raw-assets/kenney_prototype-textures/Sample.png differ
diff --git a/raw-assets/kenney_prototype-textures/Vector/texture_01.svg b/raw-assets/kenney_prototype-textures/Vector/texture_01.svg
new file mode 100644
index 0000000..fc16bc7
--- /dev/null
+++ b/raw-assets/kenney_prototype-textures/Vector/texture_01.svg
@@ -0,0 +1,12 @@
+
\ No newline at end of file
diff --git a/raw-assets/kenney_prototype-textures/Vector/texture_02.svg b/raw-assets/kenney_prototype-textures/Vector/texture_02.svg
new file mode 100644
index 0000000..6af7715
--- /dev/null
+++ b/raw-assets/kenney_prototype-textures/Vector/texture_02.svg
@@ -0,0 +1,10 @@
+
\ No newline at end of file
diff --git a/raw-assets/kenney_prototype-textures/Vector/texture_03.svg b/raw-assets/kenney_prototype-textures/Vector/texture_03.svg
new file mode 100644
index 0000000..1a23062
--- /dev/null
+++ b/raw-assets/kenney_prototype-textures/Vector/texture_03.svg
@@ -0,0 +1,11 @@
+
\ No newline at end of file
diff --git a/raw-assets/kenney_prototype-textures/Vector/texture_04.svg b/raw-assets/kenney_prototype-textures/Vector/texture_04.svg
new file mode 100644
index 0000000..b8891ad
--- /dev/null
+++ b/raw-assets/kenney_prototype-textures/Vector/texture_04.svg
@@ -0,0 +1,9 @@
+
\ No newline at end of file
diff --git a/raw-assets/kenney_prototype-textures/Vector/texture_05.svg b/raw-assets/kenney_prototype-textures/Vector/texture_05.svg
new file mode 100644
index 0000000..fa737e9
--- /dev/null
+++ b/raw-assets/kenney_prototype-textures/Vector/texture_05.svg
@@ -0,0 +1,13 @@
+
\ No newline at end of file
diff --git a/raw-assets/kenney_prototype-textures/Vector/texture_06.svg b/raw-assets/kenney_prototype-textures/Vector/texture_06.svg
new file mode 100644
index 0000000..2d7fa36
--- /dev/null
+++ b/raw-assets/kenney_prototype-textures/Vector/texture_06.svg
@@ -0,0 +1,12 @@
+
\ No newline at end of file
diff --git a/raw-assets/kenney_prototype-textures/Vector/texture_07.svg b/raw-assets/kenney_prototype-textures/Vector/texture_07.svg
new file mode 100644
index 0000000..2f76dcd
--- /dev/null
+++ b/raw-assets/kenney_prototype-textures/Vector/texture_07.svg
@@ -0,0 +1,9 @@
+
\ No newline at end of file
diff --git a/raw-assets/kenney_prototype-textures/Vector/texture_08.svg b/raw-assets/kenney_prototype-textures/Vector/texture_08.svg
new file mode 100644
index 0000000..cb098b8
--- /dev/null
+++ b/raw-assets/kenney_prototype-textures/Vector/texture_08.svg
@@ -0,0 +1,9 @@
+
\ No newline at end of file
diff --git a/raw-assets/kenney_prototype-textures/Vector/texture_09.svg b/raw-assets/kenney_prototype-textures/Vector/texture_09.svg
new file mode 100644
index 0000000..d21be51
--- /dev/null
+++ b/raw-assets/kenney_prototype-textures/Vector/texture_09.svg
@@ -0,0 +1,7 @@
+
\ No newline at end of file
diff --git a/raw-assets/kenney_prototype-textures/Vector/texture_10.svg b/raw-assets/kenney_prototype-textures/Vector/texture_10.svg
new file mode 100644
index 0000000..5e998e8
--- /dev/null
+++ b/raw-assets/kenney_prototype-textures/Vector/texture_10.svg
@@ -0,0 +1,9 @@
+
\ No newline at end of file
diff --git a/raw-assets/kenney_prototype-textures/Vector/texture_11.svg b/raw-assets/kenney_prototype-textures/Vector/texture_11.svg
new file mode 100644
index 0000000..fea61c5
--- /dev/null
+++ b/raw-assets/kenney_prototype-textures/Vector/texture_11.svg
@@ -0,0 +1,13 @@
+
\ No newline at end of file
diff --git a/raw-assets/kenney_prototype-textures/Vector/texture_12.svg b/raw-assets/kenney_prototype-textures/Vector/texture_12.svg
new file mode 100644
index 0000000..c0bba91
--- /dev/null
+++ b/raw-assets/kenney_prototype-textures/Vector/texture_12.svg
@@ -0,0 +1,13 @@
+
\ No newline at end of file
diff --git a/raw-assets/kenney_prototype-textures/Vector/texture_13.svg b/raw-assets/kenney_prototype-textures/Vector/texture_13.svg
new file mode 100644
index 0000000..1d821bf
--- /dev/null
+++ b/raw-assets/kenney_prototype-textures/Vector/texture_13.svg
@@ -0,0 +1,13 @@
+
\ No newline at end of file
diff --git a/raw-assets/test_map.blend b/raw-assets/test_map.blend
new file mode 100644
index 0000000..ab64943
Binary files /dev/null and b/raw-assets/test_map.blend differ
diff --git a/shell.nix b/shell.nix
index b02745e..6310146 100644
--- a/shell.nix
+++ b/shell.nix
@@ -8,6 +8,7 @@ mkShell rec {
pkg-config
];
buildInputs = [
+ trunk
mold clang # To compile using mold linker
udev alsa-lib vulkan-loader
xorg.libX11 xorg.libXcursor xorg.libXi xorg.libXrandr # To use the x11 feature
diff --git a/src/charcacter_controller.rs b/src/charcacter_controller.rs
index 08eb138..676ae2c 100644
--- a/src/charcacter_controller.rs
+++ b/src/charcacter_controller.rs
@@ -24,10 +24,15 @@ impl Plugin for CharacterControllerPlugin{
fn build(&self, app: &mut App) {
app.add_systems(Update,(
keyboard_input,
+ move_character,
+ )
+ );
+ app.add_systems(FixedUpdate, (
+
+ dampen_movement,
+ update_grounded
)
);
- app.add_systems(FixedUpdate, (move_character,
- dampen_movement,update_grounded));
app.add_event::();
}
}
@@ -151,7 +156,8 @@ pub fn move_character(
time: Res