mirror of
https://github.com/JulianGro/overte.git
synced 2025-04-29 19:02:55 +02:00
commit
76b7ca9779
17 changed files with 171 additions and 108 deletions
56
.github/workflows/master_build.yml
vendored
56
.github/workflows/master_build.yml
vendored
|
@ -3,8 +3,7 @@ name: Master CI Build
|
||||||
on:
|
on:
|
||||||
push:
|
push:
|
||||||
branches:
|
branches:
|
||||||
- gha-master-ci
|
- master
|
||||||
# FIXME: Change target branch to "master" before merging into "master" branch.
|
|
||||||
|
|
||||||
env:
|
env:
|
||||||
APP_NAME: interface
|
APP_NAME: interface
|
||||||
|
@ -48,50 +47,51 @@ jobs:
|
||||||
shell: bash
|
shell: bash
|
||||||
id: buildenv1
|
id: buildenv1
|
||||||
run: |
|
run: |
|
||||||
echo ::set-env name=UPLOAD_PREFIX::master
|
echo "UPLOAD_PREFIX=master" >> $GITHUB_ENV
|
||||||
echo ::set-env name=GIT_COMMIT_SHORT::`echo $GIT_COMMIT | cut -c1-7`
|
echo ::set-output name=github_sha_short::`echo $GIT_COMMIT | cut -c1-7`
|
||||||
echo ::set-env name=JOB_NAME::"build (${{matrix.os}}, ${{matrix.build_type}})"
|
echo "JOB_NAME=build (${{matrix.os}}, ${{matrix.build_type}})" >> $GITHUB_ENV
|
||||||
# Linux build variables
|
# Linux build variables
|
||||||
if [[ "${{ matrix.os }}" = "ubuntu-"* ]]; then
|
if [[ "${{ matrix.os }}" = "ubuntu-"* ]]; then
|
||||||
echo ::set-env name=PYTHON_EXEC::python3
|
echo "PYTHON_EXEC=python3" >> $GITHUB_ENV
|
||||||
echo ::set-env name=INSTALLER_EXT::tgz
|
echo "INSTALLER_EXT=tgz" >> $GITHUB_ENV
|
||||||
echo ::set-env name=CMAKE_BUILD_EXTRA::"-- -j3"
|
echo "CMAKE_BUILD_EXTRA=-- -j3" >> $GITHUB_ENV
|
||||||
echo ::set-env name=CMAKE_EXTRA::"-DBUILD_TOOLS:BOOLEAN=FALSE -DHIFI_PYTHON_EXEC:FILEPATH=$(which python3)"
|
echo "CMAKE_EXTRA=-DBUILD_TOOLS:BOOLEAN=FALSE -DHIFI_PYTHON_EXEC:FILEPATH=$(which python3)" >> $GITHUB_ENV
|
||||||
fi
|
fi
|
||||||
# Mac build variables
|
# Mac build variables
|
||||||
if [ "${{ matrix.os }}" = "macOS-latest" ]; then
|
if [ "${{ matrix.os }}" = "macOS-latest" ]; then
|
||||||
echo ::set-env name=PYTHON_EXEC::python3
|
echo "PYTHON_EXEC=python3" >> $GITHUB_ENV
|
||||||
echo ::set-env name=ZIP_COMMAND::zip
|
echo "ZIP_COMMAND=zip" >> $GITHUB_ENV
|
||||||
echo ::set-env name=ZIP_ARGS::-r
|
echo "ZIP_ARGS=-r" >> $GITHUB_ENV
|
||||||
echo ::set-env name=INSTALLER_EXT::dmg
|
echo "INSTALLER_EXT=dmg" >> $GITHUB_ENV
|
||||||
echo ::set-env name=CMAKE_EXTRA::"-DCMAKE_XCODE_ATTRIBUTE_CODE_SIGNING_REQUIRED=OFF -DOPENSSL_ROOT_DIR=/usr/local/opt/openssl -G Xcode"
|
echo "CMAKE_EXTRA=-DCMAKE_XCODE_ATTRIBUTE_CODE_SIGNING_REQUIRED=OFF -DOPENSSL_ROOT_DIR=/usr/local/opt/openssl -G Xcode" >> $GITHUB_ENV
|
||||||
echo "::set-output name=symbols_archive::${BUILD_NUMBER}-${{ matrix.build_type }}-mac-symbols.zip"
|
echo "::set-output name=symbols_archive::${BUILD_NUMBER}-${{ matrix.build_type }}-mac-symbols.zip"
|
||||||
fi
|
fi
|
||||||
# Windows build variables
|
# Windows build variables
|
||||||
if [ "${{ matrix.os }}" = "windows-latest" ]; then
|
if [ "${{ matrix.os }}" = "windows-latest" ]; then
|
||||||
echo ::set-env name=PYTHON_EXEC::python
|
echo "PYTHON_EXEC=python" >> $GITHUB_ENV
|
||||||
echo ::set-env name=ZIP_COMMAND::7z
|
echo "ZIP_COMMAND=7z" >> $GITHUB_ENV
|
||||||
echo ::set-env name=ZIP_ARGS::a
|
echo "ZIP_ARGS=a" >> $GITHUB_ENV
|
||||||
echo ::set-env name=INSTALLER_EXT::exe
|
echo "INSTALLER_EXT=exe" >> $GITHUB_ENV
|
||||||
echo ::set-env name=CMAKE_EXTRA::"-A x64"
|
echo "CMAKE_EXTRA=-A x64" >> $GITHUB_ENV
|
||||||
echo "::set-env name=SYMBOL_REGEX::\(exe\|dll\|pdb\)"
|
echo "SYMBOL_REGEX=\(exe\|dll\|pdb\)" >> $GITHUB_ENV
|
||||||
echo "::set-output name=symbols_archive::${BUILD_NUMBER}-${{ matrix.build_type }}-win-symbols.zip"
|
echo "symbols_archive=${BUILD_NUMBER}-${{ matrix.build_type }}-win-symbols.zip" >> $GITHUB_ENV
|
||||||
# echo ::set-env name=HF_PFX_PASSPHRASE::${{secrets.pfx_key}}
|
# echo "HF_PFX_PASSPHRASE=${{secrets.pfx_key}}" >> $GITHUB_ENV
|
||||||
# echo "::set-env name=HF_PFX_FILE::${{runner.workspace}}\build\codesign.pfx"
|
# echo "HF_PFX_FILE=${{runner.workspace}}\build\codesign.pfx" >> $GITHUB_ENV
|
||||||
fi
|
fi
|
||||||
# Configuration is broken into two steps because you can't set an env var and also reference it in the same step
|
# Configuration is broken into two steps because you can't set an env var and also reference it in the same step
|
||||||
- name: Configure build environment 2
|
- name: Configure build environment 2
|
||||||
shell: bash
|
shell: bash
|
||||||
run: |
|
run: |
|
||||||
echo "${{ steps.buildenv1.outputs.symbols_archive }}"
|
echo "${{ steps.buildenv1.outputs.symbols_archive }}"
|
||||||
echo ::set-env name=ARTIFACT_PATTERN::Vircadia-Alpha-*.$INSTALLER_EXT
|
echo "ARTIFACT_PATTERN=Vircadia-Alpha-*.$INSTALLER_EXT" >> $GITHUB_ENV
|
||||||
# Build type variables
|
# Build type variables
|
||||||
|
echo "GIT_COMMIT_SHORT=${{ steps.buildenv1.outputs.github_sha_short }}" >> $GITHUB_ENV
|
||||||
if [ "${{ matrix.build_type }}" = "full" ]; then
|
if [ "${{ matrix.build_type }}" = "full" ]; then
|
||||||
echo ::set-env name=CLIENT_ONLY::FALSE
|
echo "CLIENT_ONLY=FALSE" >> $GITHUB_ENV
|
||||||
echo ::set-env name=INSTALLER::Vircadia-Alpha-$BUILD_NUMBER-$GIT_COMMIT_SHORT.$INSTALLER_EXT
|
echo "INSTALLER=Vircadia-Alpha-$BUILD_NUMBER-$GIT_COMMIT_SHORT.$INSTALLER_EXT" >> $GITHUB_ENV
|
||||||
else
|
else
|
||||||
echo ::set-env name=CLIENT_ONLY::TRUE
|
echo "CLIENT_ONLY=TRUE" >> $GITHUB_ENV
|
||||||
echo ::set-env name=INSTALLER::Vircadia-Alpha-Interface-$BUILD_NUMBER-$GIT_COMMIT_SHORT.$INSTALLER_EXT
|
echo "INSTALLER=Vircadia-Alpha-Interface-$BUILD_NUMBER-$GIT_COMMIT_SHORT.$INSTALLER_EXT" >> $GITHUB_ENV
|
||||||
fi
|
fi
|
||||||
- name: Clear working directory
|
- name: Clear working directory
|
||||||
if: startsWith(matrix.os, 'windows')
|
if: startsWith(matrix.os, 'windows')
|
||||||
|
|
74
.github/workflows/pr_build.yml
vendored
74
.github/workflows/pr_build.yml
vendored
|
@ -22,19 +22,24 @@ env:
|
||||||
|
|
||||||
# WIN32 specific variables
|
# WIN32 specific variables
|
||||||
PreferredToolArchitecture: X64
|
PreferredToolArchitecture: X64
|
||||||
GIT_COMMIT_SHORT: ${{ github.sha }}
|
|
||||||
|
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
build:
|
build:
|
||||||
|
name: "build (${{matrix.os}}, ${{matrix.build_type}})"
|
||||||
strategy:
|
strategy:
|
||||||
matrix:
|
matrix:
|
||||||
os: [windows-latest, macOS-latest, ubuntu-18.04]
|
|
||||||
build_type: [full]
|
|
||||||
include:
|
include:
|
||||||
|
- os: windows-latest
|
||||||
|
build_type: full
|
||||||
|
- os: macOS-latest
|
||||||
|
build_type: full
|
||||||
- os: ubuntu-18.04
|
- os: ubuntu-18.04
|
||||||
build_type: full
|
build_type: full
|
||||||
apt-dependencies: mesa-common-dev libegl1 libglvnd-dev libdouble-conversion1 libpulse0
|
apt-dependencies: mesa-common-dev libegl1 libglvnd-dev libdouble-conversion1 libpulse0
|
||||||
|
- os: ubuntu-18.04
|
||||||
|
build_type: android
|
||||||
|
apt-dependencies: mesa-common-dev libegl1 libglvnd-dev libdouble-conversion1 libpulse0
|
||||||
fail-fast: false
|
fail-fast: false
|
||||||
runs-on: ${{matrix.os}}
|
runs-on: ${{matrix.os}}
|
||||||
if: github.event.action != 'labeled' || github.event.label.name == 'rebuild'
|
if: github.event.action != 'labeled' || github.event.label.name == 'rebuild'
|
||||||
|
@ -43,36 +48,48 @@ jobs:
|
||||||
shell: bash
|
shell: bash
|
||||||
id: buildenv1
|
id: buildenv1
|
||||||
run: |
|
run: |
|
||||||
echo ::set-env name=GIT_COMMIT_SHORT::`echo $GIT_COMMIT | cut -c1-7`
|
echo ::set-output name=github_sha_short::`echo $GIT_COMMIT | cut -c1-7`
|
||||||
echo ::set-env name=JOB_NAME::"build (${{matrix.os}}, ${{matrix.build_type}})"
|
echo "JOB_NAME=build (${{matrix.os}}, ${{matrix.build_type}})" >> $GITHUB_ENV
|
||||||
|
|
||||||
# Linux build variables
|
# Linux build variables
|
||||||
if [[ "${{ matrix.os }}" = "ubuntu-"* ]]; then
|
if [[ "${{ matrix.os }}" = "ubuntu-"* ]]; then
|
||||||
echo ::set-env name=PYTHON_EXEC::python3
|
echo "PYTHON_EXEC=python3" >> $GITHUB_ENV
|
||||||
echo ::set-env name=INSTALLER_EXT::*
|
echo "INSTALLER_EXT=*" >> $GITHUB_ENV
|
||||||
echo ::set-env name=CMAKE_BUILD_EXTRA::"-- -j3"
|
echo "CMAKE_BUILD_EXTRA=-- -j3" >> $GITHUB_ENV
|
||||||
echo ::set-env name=CMAKE_EXTRA::"-DBUILD_TOOLS:BOOLEAN=FALSE -DHIFI_PYTHON_EXEC:FILEPATH=$(which python3)"
|
echo "CMAKE_EXTRA=-DBUILD_TOOLS:BOOLEAN=FALSE -DHIFI_PYTHON_EXEC:FILEPATH=$(which python3)" >> $GITHUB_ENV
|
||||||
fi
|
fi
|
||||||
# Mac build variables
|
# Mac build variables
|
||||||
if [ "${{ matrix.os }}" = "macOS-latest" ]; then
|
if [ "${{ matrix.os }}" = "macOS-latest" ]; then
|
||||||
echo ::set-env name=PYTHON_EXEC::python3
|
echo "PYTHON_EXEC=python3" >> $GITHUB_ENV
|
||||||
echo ::set-env name=INSTALLER_EXT::dmg
|
echo "INSTALLER_EXT=dmg" >> $GITHUB_ENV
|
||||||
echo ::set-env name=CMAKE_EXTRA::"-DCMAKE_XCODE_ATTRIBUTE_CODE_SIGNING_REQUIRED=OFF -DOPENSSL_ROOT_DIR=/usr/local/opt/openssl -G Xcode"
|
echo "CMAKE_EXTRA=-DCMAKE_XCODE_ATTRIBUTE_CODE_SIGNING_REQUIRED=OFF -DOPENSSL_ROOT_DIR=/usr/local/opt/openssl -G Xcode" >> $GITHUB_ENV
|
||||||
fi
|
fi
|
||||||
# Windows build variables
|
# Windows build variables
|
||||||
if [ "${{ matrix.os }}" = "windows-latest" ]; then
|
if [ "${{ matrix.os }}" = "windows-latest" ]; then
|
||||||
echo ::set-env name=PYTHON_EXEC::python
|
echo "PYTHON_EXEC=python" >> $GITHUB_ENV
|
||||||
echo ::set-env name=INSTALLER_EXT::exe
|
echo "INSTALLER_EXT=exe" >> $GITHUB_ENV
|
||||||
echo ::set-env name=CMAKE_EXTRA::"-A x64"
|
echo "CMAKE_EXTRA=-A x64" >> $GITHUB_ENV
|
||||||
|
fi
|
||||||
|
# Android + Quest build variables
|
||||||
|
if [[ "${{ matrix.build_type }}" == "android" ]]; then
|
||||||
|
HIFI_ANDROID_PRECOMPILED="${{runner.workspace}}/dependencies"
|
||||||
|
echo "HIFI_ANDROID_PRECOMPILED=$HIFI_ANDROID_PRECOMPILED" >> $GITHUB_ENV
|
||||||
|
mkdir $HIFI_ANDROID_PRECOMPILED
|
||||||
|
echo "INSTALLER_EXT=apk" >> $GITHUB_ENV
|
||||||
fi
|
fi
|
||||||
# Configuration is broken into two steps because you can't set an env var and also reference it in the same step
|
# Configuration is broken into two steps because you can't set an env var and also reference it in the same step
|
||||||
- name: Configure Build Environment 2
|
- name: Configure Build Environment 2
|
||||||
shell: bash
|
shell: bash
|
||||||
run: |
|
run: |
|
||||||
echo "${{ steps.buildenv1.outputs.symbols_archive }}"
|
echo "${{ steps.buildenv1.outputs.symbols_archive }}"
|
||||||
echo ::set-env name=ARTIFACT_PATTERN::Vircadia-Alpha-PR${{ github.event.number }}-*.$INSTALLER_EXT
|
echo "GIT_COMMIT_SHORT=${{ steps.buildenv1.outputs.github_sha_short }}" >> $GITHUB_ENV
|
||||||
|
if [[ "${{ matrix.build_type }}" != "android" ]]; then
|
||||||
|
echo "ARTIFACT_PATTERN=Vircadia-Alpha-PR${{ github.event.number }}-*.$INSTALLER_EXT" >> $GITHUB_ENV
|
||||||
# Build type variables
|
# Build type variables
|
||||||
echo ::set-env name=INSTALLER::Vircadia-Alpha-$RELEASE_NUMBER-$GIT_COMMIT_SHORT.$INSTALLER_EXT
|
echo "INSTALLER=Vircadia-Alpha-$RELEASE_NUMBER-$GIT_COMMIT_SHORT.$INSTALLER_EXT" >> $GITHUB_ENV
|
||||||
|
else
|
||||||
|
echo "ARTIFACT_PATTERN=*.$INSTALLER_EXT" >> $GITHUB_ENV
|
||||||
|
fi
|
||||||
- name: Clear Working Directory
|
- name: Clear Working Directory
|
||||||
if: startsWith(matrix.os, 'windows')
|
if: startsWith(matrix.os, 'windows')
|
||||||
shell: bash
|
shell: bash
|
||||||
|
@ -102,22 +119,27 @@ jobs:
|
||||||
shell: bash
|
shell: bash
|
||||||
run: cmake $GITHUB_WORKSPACE -DCMAKE_BUILD_TYPE=$BUILD_TYPE -DVCPKG_BUILD_TYPE=release $CMAKE_EXTRA
|
run: cmake $GITHUB_WORKSPACE -DCMAKE_BUILD_TYPE=$BUILD_TYPE -DVCPKG_BUILD_TYPE=release $CMAKE_EXTRA
|
||||||
- name: Build Application
|
- name: Build Application
|
||||||
|
if: matrix.build_type == 'full' || matrix.build_type == 'client'
|
||||||
working-directory: ${{runner.workspace}}/build
|
working-directory: ${{runner.workspace}}/build
|
||||||
shell: bash
|
shell: bash
|
||||||
run: cmake --build . --config $BUILD_TYPE --target $APP_NAME $CMAKE_BUILD_EXTRA
|
run: cmake --build . --config $BUILD_TYPE --target $APP_NAME $CMAKE_BUILD_EXTRA
|
||||||
- name: Build Domain Server
|
- name: Build Domain Server
|
||||||
|
if: matrix.build_type == 'full'
|
||||||
working-directory: ${{runner.workspace}}/build
|
working-directory: ${{runner.workspace}}/build
|
||||||
shell: bash
|
shell: bash
|
||||||
run: cmake --build . --config $BUILD_TYPE --target domain-server $CMAKE_BUILD_EXTRA
|
run: cmake --build . --config $BUILD_TYPE --target domain-server $CMAKE_BUILD_EXTRA
|
||||||
- name: Build Assignment Client
|
- name: Build Assignment Client
|
||||||
|
if: matrix.build_type == 'full'
|
||||||
working-directory: ${{runner.workspace}}/build
|
working-directory: ${{runner.workspace}}/build
|
||||||
shell: bash
|
shell: bash
|
||||||
run: cmake --build . --config $BUILD_TYPE --target assignment-client $CMAKE_BUILD_EXTRA
|
run: cmake --build . --config $BUILD_TYPE --target assignment-client $CMAKE_BUILD_EXTRA
|
||||||
- name: Build Console
|
- name: Build Console
|
||||||
|
if: matrix.build_type == 'full'
|
||||||
working-directory: ${{runner.workspace}}/build
|
working-directory: ${{runner.workspace}}/build
|
||||||
shell: bash
|
shell: bash
|
||||||
run: cmake --build . --config $BUILD_TYPE --target packaged-server-console $CMAKE_BUILD_EXTRA
|
run: cmake --build . --config $BUILD_TYPE --target packaged-server-console $CMAKE_BUILD_EXTRA
|
||||||
- name: Build Installer
|
- name: Build Installer
|
||||||
|
if: matrix.build_type != 'android'
|
||||||
working-directory: ${{runner.workspace}}/build
|
working-directory: ${{runner.workspace}}/build
|
||||||
shell: bash
|
shell: bash
|
||||||
run: |
|
run: |
|
||||||
|
@ -144,6 +166,18 @@ jobs:
|
||||||
done
|
done
|
||||||
}
|
}
|
||||||
retry cmake --build . --config $BUILD_TYPE --target package $CMAKE_BUILD_EXTRA
|
retry cmake --build . --config $BUILD_TYPE --target package $CMAKE_BUILD_EXTRA
|
||||||
|
- name: Build for Android + Quest
|
||||||
|
if: matrix.build_type == 'android'
|
||||||
|
shell: bash
|
||||||
|
working-directory: ${{runner.workspace}}/project-athena
|
||||||
|
run: |
|
||||||
|
echo "Pre-cache the vcpkg managed dependencies"
|
||||||
|
$PYTHON_EXEC prebuild.py --build-root ${{runner.workspace}}/build --android interface
|
||||||
|
cd android
|
||||||
|
# Pre-cache the gradle dependencies
|
||||||
|
./gradlew -m tasks -PHIFI_ANDROID_PRECOMPILED=$HIFI_ANDROID_PRECOMPILED
|
||||||
|
# Build!
|
||||||
|
./build_android.sh
|
||||||
- name: Output system stats
|
- name: Output system stats
|
||||||
if: ${{ always() }}
|
if: ${{ always() }}
|
||||||
working-directory: ${{runner.workspace}}/build
|
working-directory: ${{runner.workspace}}/build
|
||||||
|
@ -161,4 +195,8 @@ jobs:
|
||||||
working-directory: ${{runner.workspace}}/build
|
working-directory: ${{runner.workspace}}/build
|
||||||
env:
|
env:
|
||||||
GITHUB_CONTEXT: ${{ toJson(github) }}
|
GITHUB_CONTEXT: ${{ toJson(github) }}
|
||||||
run: $PYTHON_EXEC "$GITHUB_WORKSPACE/tools/ci-scripts/upload_to_publish_server.py"
|
run: |
|
||||||
|
if [[ "${{ matrix.build_type }}" == "android" ]]; then
|
||||||
|
cd $GITHUB_WORKSPACE/android
|
||||||
|
fi
|
||||||
|
$PYTHON_EXEC "$GITHUB_WORKSPACE/tools/ci-scripts/upload_to_publish_server.py"
|
|
@ -5,11 +5,11 @@ ANDROID_BUILD_TYPE=release
|
||||||
ANDROID_BUILD_TARGET=assembleRelease
|
ANDROID_BUILD_TARGET=assembleRelease
|
||||||
|
|
||||||
if [[ "$RELEASE_TYPE" == "PR" ]]; then
|
if [[ "$RELEASE_TYPE" == "PR" ]]; then
|
||||||
ANDROID_APK_SUFFIX=PR${RELEASE_NUMBER}-${SHA7}.apk ;
|
ANDROID_APK_SUFFIX=PR${RELEASE_NUMBER}-${GIT_COMMIT_SHORT}.apk ;
|
||||||
elif [[ "${STABLE_BUILD}" == "1" ]]; then
|
elif [[ "${STABLE_BUILD}" == "1" ]]; then
|
||||||
ANDROID_APK_SUFFIX=${RELEASE_NUMBER}.apk ;
|
ANDROID_APK_SUFFIX=${RELEASE_NUMBER}.apk ;
|
||||||
else
|
else
|
||||||
ANDROID_APK_SUFFIX=${RELEASE_NUMBER}-${SHA7}.apk ;
|
ANDROID_APK_SUFFIX=${RELEASE_NUMBER}-${GIT_COMMIT_SHORT}.apk ;
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
@ -17,7 +17,7 @@ fi
|
||||||
ANDROID_APP=interface
|
ANDROID_APP=interface
|
||||||
ANDROID_OUTPUT_DIR=./apps/${ANDROID_APP}/build/outputs/apk/${ANDROID_BUILD_TYPE}
|
ANDROID_OUTPUT_DIR=./apps/${ANDROID_APP}/build/outputs/apk/${ANDROID_BUILD_TYPE}
|
||||||
ANDROID_OUTPUT_FILE=${ANDROID_APP}-${ANDROID_BUILD_TYPE}.apk
|
ANDROID_OUTPUT_FILE=${ANDROID_APP}-${ANDROID_BUILD_TYPE}.apk
|
||||||
ANDROID_APK_NAME=HighFidelity-Beta-${ANDROID_APK_SUFFIX}
|
ANDROID_APK_NAME=Vircadia-Alpha-${ANDROID_APK_SUFFIX}
|
||||||
./gradlew -PHIFI_ANDROID_PRECOMPILED=${HIFI_ANDROID_PRECOMPILED} -PVERSION_CODE=${VERSION_CODE} -PRELEASE_NUMBER=${RELEASE_NUMBER} -PRELEASE_TYPE=${RELEASE_TYPE} ${ANDROID_APP}:${ANDROID_BUILD_TARGET}
|
./gradlew -PHIFI_ANDROID_PRECOMPILED=${HIFI_ANDROID_PRECOMPILED} -PVERSION_CODE=${VERSION_CODE} -PRELEASE_NUMBER=${RELEASE_NUMBER} -PRELEASE_TYPE=${RELEASE_TYPE} ${ANDROID_APP}:${ANDROID_BUILD_TARGET}
|
||||||
cp ${ANDROID_OUTPUT_DIR}/${ANDROID_OUTPUT_FILE} ./${ANDROID_APK_NAME}
|
cp ${ANDROID_OUTPUT_DIR}/${ANDROID_OUTPUT_FILE} ./${ANDROID_APK_NAME}
|
||||||
|
|
||||||
|
@ -25,9 +25,9 @@ cp ${ANDROID_OUTPUT_DIR}/${ANDROID_OUTPUT_FILE} ./${ANDROID_APK_NAME}
|
||||||
ANDROID_APP=questInterface
|
ANDROID_APP=questInterface
|
||||||
ANDROID_OUTPUT_DIR=./apps/${ANDROID_APP}/build/outputs/apk/${ANDROID_BUILD_TYPE}
|
ANDROID_OUTPUT_DIR=./apps/${ANDROID_APP}/build/outputs/apk/${ANDROID_BUILD_TYPE}
|
||||||
ANDROID_OUTPUT_FILE=${ANDROID_APP}-${ANDROID_BUILD_TYPE}.apk
|
ANDROID_OUTPUT_FILE=${ANDROID_APP}-${ANDROID_BUILD_TYPE}.apk
|
||||||
ANDROID_APK_NAME=HighFidelity-Quest-Beta-${ANDROID_APK_SUFFIX}
|
ANDROID_APK_NAME=Vircadia-Quest-Alpha-${ANDROID_APK_SUFFIX}
|
||||||
./gradlew -PHIFI_ANDROID_PRECOMPILED=${HIFI_ANDROID_PRECOMPILED} -PVERSION_CODE=${VERSION_CODE} -PRELEASE_NUMBER=${RELEASE_NUMBER} -PRELEASE_TYPE=${RELEASE_TYPE} ${ANDROID_APP}:${ANDROID_BUILD_TARGET} || true
|
./gradlew -PHIFI_ANDROID_PRECOMPILED=${HIFI_ANDROID_PRECOMPILED} -PVERSION_CODE=${VERSION_CODE} -PRELEASE_NUMBER=${RELEASE_NUMBER} -PRELEASE_TYPE=${RELEASE_TYPE} ${ANDROID_APP}:${ANDROID_BUILD_TARGET} || true
|
||||||
cp ${ANDROID_OUTPUT_DIR}/${ANDROID_OUTPUT_FILE} ./${ANDROID_APK_NAME} || true
|
cp ${ANDROID_OUTPUT_DIR}/${ANDROID_OUTPUT_FILE} ./${ANDROID_APK_NAME}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,9 +1,9 @@
|
||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
set -xeuo pipefail
|
set -xeuo pipefail
|
||||||
|
|
||||||
DOCKER_IMAGE_NAME="hifi_androidbuild"
|
DOCKER_IMAGE_NAME="vircadia_androidbuild"
|
||||||
|
|
||||||
docker build --build-arg BUILD_UID=`id -u` -t "${DOCKER_IMAGE_NAME}" -f docker/Dockerfile docker
|
docker build --build-arg BUILD_UID=`id -u` -t "${DOCKER_IMAGE_NAME}" -f ./android/docker/Dockerfile ./android/docker
|
||||||
|
|
||||||
# The Jenkins PR builds use VERSION_CODE, but the release builds use VERSION
|
# The Jenkins PR builds use VERSION_CODE, but the release builds use VERSION
|
||||||
# So make sure we use VERSION_CODE consistently
|
# So make sure we use VERSION_CODE consistently
|
||||||
|
@ -17,7 +17,7 @@ test -z "$STABLE_BUILD" && export STABLE_BUILD=0
|
||||||
docker run \
|
docker run \
|
||||||
--rm \
|
--rm \
|
||||||
--security-opt seccomp:unconfined \
|
--security-opt seccomp:unconfined \
|
||||||
-v "${WORKSPACE}":/home/jenkins/hifi \
|
-v "${WORKSPACE}":/home/gha/project-athena \
|
||||||
-e RELEASE_NUMBER \
|
-e RELEASE_NUMBER \
|
||||||
-e RELEASE_TYPE \
|
-e RELEASE_TYPE \
|
||||||
-e ANDROID_APP \
|
-e ANDROID_APP \
|
||||||
|
@ -33,7 +33,7 @@ docker run \
|
||||||
-e OAUTH_CLIENT_SECRET \
|
-e OAUTH_CLIENT_SECRET \
|
||||||
-e OAUTH_CLIENT_ID \
|
-e OAUTH_CLIENT_ID \
|
||||||
-e OAUTH_REDIRECT_URI \
|
-e OAUTH_REDIRECT_URI \
|
||||||
-e SHA7 \
|
-e GIT_COMMIT_SHORT \
|
||||||
-e STABLE_BUILD \
|
-e STABLE_BUILD \
|
||||||
-e VERSION_CODE \
|
-e VERSION_CODE \
|
||||||
"${DOCKER_IMAGE_NAME}" \
|
"${DOCKER_IMAGE_NAME}" \
|
||||||
|
|
|
@ -57,13 +57,13 @@ RUN apt-get -y install \
|
||||||
|
|
||||||
# --- Gradle
|
# --- Gradle
|
||||||
ARG BUILD_UID=1001
|
ARG BUILD_UID=1001
|
||||||
RUN useradd -ms /bin/bash -u $BUILD_UID jenkins
|
RUN useradd -ms /bin/bash -u $BUILD_UID gha
|
||||||
RUN echo "jenkins ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers
|
RUN echo "gha ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers
|
||||||
USER jenkins
|
USER gha
|
||||||
WORKDIR /home/jenkins
|
WORKDIR /home/gha
|
||||||
|
|
||||||
# Hifi dependencies
|
# Vircadia dependencies
|
||||||
ENV HIFI_BASE="/home/jenkins/hifi_android"
|
ENV HIFI_BASE="/home/gha/vircadia_android"
|
||||||
ENV HIFI_ANDROID_PRECOMPILED="$HIFI_BASE/dependencies"
|
ENV HIFI_ANDROID_PRECOMPILED="$HIFI_BASE/dependencies"
|
||||||
ENV HIFI_VCPKG_BASE="$HIFI_BASE/vcpkg"
|
ENV HIFI_VCPKG_BASE="$HIFI_BASE/vcpkg"
|
||||||
|
|
||||||
|
@ -71,24 +71,18 @@ RUN mkdir "$HIFI_BASE" && \
|
||||||
mkdir "$HIFI_VCPKG_BASE" && \
|
mkdir "$HIFI_VCPKG_BASE" && \
|
||||||
mkdir "$HIFI_ANDROID_PRECOMPILED"
|
mkdir "$HIFI_ANDROID_PRECOMPILED"
|
||||||
|
|
||||||
# Checkout a relatively recent commit from the main repository and use it to cache the
|
# Download the repo
|
||||||
# gradle and vcpkg dependencies
|
RUN git clone https://github.com/kasenvr/project-athena.git
|
||||||
# This commit ID should be updated whenever someone changes the dependency list
|
|
||||||
# in cmake/ports
|
|
||||||
RUN git clone https://github.com/highfidelity/hifi.git && \
|
|
||||||
cd ~/hifi && \
|
|
||||||
git checkout 796bfb5d6715ff14c2e60f3ee8fac1465b7578c6
|
|
||||||
|
|
||||||
WORKDIR /home/jenkins/hifi
|
WORKDIR /home/gha/project-athena
|
||||||
|
|
||||||
RUN mkdir build
|
RUN mkdir build
|
||||||
|
|
||||||
# Pre-cache the vcpkg managed dependencies
|
# Pre-cache the vcpkg managed dependencies
|
||||||
WORKDIR /home/jenkins/hifi/build
|
WORKDIR /home/gha/project-athena/build
|
||||||
RUN python3 ../prebuild.py --build-root `pwd` --android interface
|
RUN python3 ../prebuild.py --build-root `pwd` --android interface
|
||||||
|
|
||||||
# Pre-cache the gradle dependencies
|
# Pre-cache the gradle dependencies
|
||||||
WORKDIR /home/jenkins/hifi/android
|
WORKDIR /home/gha/project-athena/android
|
||||||
RUN ./gradlew -m tasks -PHIFI_ANDROID_PRECOMPILED=$HIFI_ANDROID_PRECOMPILED
|
RUN ./gradlew -m tasks -PHIFI_ANDROID_PRECOMPILED=$HIFI_ANDROID_PRECOMPILED
|
||||||
#RUN ./gradlew extractDependencies -PHIFI_ANDROID_PRECOMPILED=$HIFI_ANDROID_PRECOMPILED
|
#RUN ./gradlew extractDependencies -PHIFI_ANDROID_PRECOMPILED=$HIFI_ANDROID_PRECOMPILED
|
||||||
|
|
||||||
|
|
|
@ -3,8 +3,8 @@ include(vcpkg_common_functions)
|
||||||
vcpkg_from_github(
|
vcpkg_from_github(
|
||||||
OUT_SOURCE_PATH SOURCE_PATH
|
OUT_SOURCE_PATH SOURCE_PATH
|
||||||
REPO oneapi-src/oneTBB
|
REPO oneapi-src/oneTBB
|
||||||
REF 4bdba61bafc6ba2d636f31564f1de5702d365cf7
|
REF eca91f16d7490a8abfdee652dadf457ec820cc37
|
||||||
SHA512 f2a8d7e0476f846039390f4a79af3fe13770e23b01bf4741e738136f7ddb401357a0e50f35212e8d0fa5fc4cf1563418337309227d7243fc3676edd406ae652d
|
SHA512 7144e1dc68304b5358e6ea330431b6f0c61fadb147efa353a5b242777d6fabf7b8cf99b79cffb51b49b911dd17a9f1879619d6eebdf319f23ec3235c89cffc25
|
||||||
HEAD_REF tbb_2019
|
HEAD_REF tbb_2019
|
||||||
PATCHES fix-static-build.patch
|
PATCHES fix-static-build.patch
|
||||||
)
|
)
|
||||||
|
|
|
@ -224,7 +224,7 @@ void EntityTreeRenderer::resetPersistentEntitiesScriptEngine() {
|
||||||
|
|
||||||
void EntityTreeRenderer::resetNonPersistentEntitiesScriptEngine() {
|
void EntityTreeRenderer::resetNonPersistentEntitiesScriptEngine() {
|
||||||
if (_nonPersistentEntitiesScriptEngine) {
|
if (_nonPersistentEntitiesScriptEngine) {
|
||||||
_nonPersistentEntitiesScriptEngine->unloadAllEntityScripts(false);
|
_nonPersistentEntitiesScriptEngine->unloadAllEntityScripts(true);
|
||||||
_nonPersistentEntitiesScriptEngine->stop();
|
_nonPersistentEntitiesScriptEngine->stop();
|
||||||
_nonPersistentEntitiesScriptEngine->waitTillDoneRunning();
|
_nonPersistentEntitiesScriptEngine->waitTillDoneRunning();
|
||||||
_nonPersistentEntitiesScriptEngine->disconnectNonEssentialSignals();
|
_nonPersistentEntitiesScriptEngine->disconnectNonEssentialSignals();
|
||||||
|
|
|
@ -96,7 +96,7 @@ void gl::initModuleGl() {
|
||||||
wglCreateContextAttribsARB = (PFNWGLCREATECONTEXTATTRIBSARBPROC)getGlProcessAddress("wglCreateContextAttribsARB");
|
wglCreateContextAttribsARB = (PFNWGLCREATECONTEXTATTRIBSARBPROC)getGlProcessAddress("wglCreateContextAttribsARB");
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined(Q_OS_LINUX)
|
#if defined(Q_OS_LINUX) && !defined(Q_OS_ANDROID)
|
||||||
QueryCurrentRendererIntegerMESA = (PFNGLXQUERYCURRENTRENDERERINTEGERMESAPROC)getGlProcessAddress("glXQueryCurrentRendererIntegerMESA");
|
QueryCurrentRendererIntegerMESA = (PFNGLXQUERYCURRENTRENDERERINTEGERMESAPROC)getGlProcessAddress("glXQueryCurrentRendererIntegerMESA");
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -134,7 +134,7 @@ void gl::setSwapInterval(int interval) {
|
||||||
}
|
}
|
||||||
|
|
||||||
bool gl::queryCurrentRendererIntegerMESA(int attr, unsigned int *value) {
|
bool gl::queryCurrentRendererIntegerMESA(int attr, unsigned int *value) {
|
||||||
#if defined(Q_OS_LINUX)
|
#if defined(Q_OS_LINUX) && !defined(Q_OS_ANDROID)
|
||||||
if (QueryCurrentRendererIntegerMESA) {
|
if (QueryCurrentRendererIntegerMESA) {
|
||||||
return QueryCurrentRendererIntegerMESA(attr, value);
|
return QueryCurrentRendererIntegerMESA(attr, value);
|
||||||
}
|
}
|
||||||
|
|
|
@ -153,9 +153,11 @@ void GLBackend::init() {
|
||||||
|
|
||||||
if (vendor.contains("NVIDIA") ) {
|
if (vendor.contains("NVIDIA") ) {
|
||||||
qCDebug(gpugllogging) << "NVIDIA card detected";
|
qCDebug(gpugllogging) << "NVIDIA card detected";
|
||||||
|
#if !defined(Q_OS_ANDROID)
|
||||||
GL_GET_INTEGER(GPU_MEMORY_INFO_DEDICATED_VIDMEM_NVX);
|
GL_GET_INTEGER(GPU_MEMORY_INFO_DEDICATED_VIDMEM_NVX);
|
||||||
GL_GET_INTEGER(GPU_MEMORY_INFO_TOTAL_AVAILABLE_MEMORY_NVX);
|
GL_GET_INTEGER(GPU_MEMORY_INFO_TOTAL_AVAILABLE_MEMORY_NVX);
|
||||||
GL_GET_INTEGER(GPU_MEMORY_INFO_CURRENT_AVAILABLE_VIDMEM_NVX);
|
GL_GET_INTEGER(GPU_MEMORY_INFO_CURRENT_AVAILABLE_VIDMEM_NVX);
|
||||||
|
#endif
|
||||||
|
|
||||||
qCDebug(gpugllogging) << "GPU_MEMORY_INFO_DEDICATED_VIDMEM_NVX: " << GPU_MEMORY_INFO_DEDICATED_VIDMEM_NVX;
|
qCDebug(gpugllogging) << "GPU_MEMORY_INFO_DEDICATED_VIDMEM_NVX: " << GPU_MEMORY_INFO_DEDICATED_VIDMEM_NVX;
|
||||||
qCDebug(gpugllogging) << "GPU_MEMORY_INFO_TOTAL_AVAILABLE_MEMORY_NVX: " << GPU_MEMORY_INFO_TOTAL_AVAILABLE_MEMORY_NVX;
|
qCDebug(gpugllogging) << "GPU_MEMORY_INFO_TOTAL_AVAILABLE_MEMORY_NVX: " << GPU_MEMORY_INFO_TOTAL_AVAILABLE_MEMORY_NVX;
|
||||||
|
@ -168,7 +170,9 @@ void GLBackend::init() {
|
||||||
|
|
||||||
} else if (vendor.contains("ATI")) {
|
} else if (vendor.contains("ATI")) {
|
||||||
qCDebug(gpugllogging) << "ATI card detected";
|
qCDebug(gpugllogging) << "ATI card detected";
|
||||||
|
#if !defined(Q_OS_ANDROID)
|
||||||
GL_GET_INTEGER(TEXTURE_FREE_MEMORY_ATI);
|
GL_GET_INTEGER(TEXTURE_FREE_MEMORY_ATI);
|
||||||
|
#endif
|
||||||
|
|
||||||
_totalMemory = TEXTURE_FREE_MEMORY_ATI * BYTES_PER_KIB;
|
_totalMemory = TEXTURE_FREE_MEMORY_ATI * BYTES_PER_KIB;
|
||||||
_dedicatedMemory = _totalMemory;
|
_dedicatedMemory = _totalMemory;
|
||||||
|
@ -215,15 +219,21 @@ void GLBackend::init() {
|
||||||
}
|
}
|
||||||
|
|
||||||
size_t GLBackend::getAvailableMemory() {
|
size_t GLBackend::getAvailableMemory() {
|
||||||
GLint mem;
|
// GL_GPU_MEMORY_INFO_CURRENT_AVAILABLE_VIDMEM_NVX returns 1 value
|
||||||
|
// GL_TEXTURE_FREE_MEMORY_ATI returns 4 values, we only need the first
|
||||||
|
GLint mem[4] = {0,0,0,0};
|
||||||
|
|
||||||
switch( _videoCard ) {
|
switch( _videoCard ) {
|
||||||
case NVIDIA:
|
case NVIDIA:
|
||||||
glGetIntegerv(GL_GPU_MEMORY_INFO_CURRENT_AVAILABLE_VIDMEM_NVX, &mem);
|
#if !defined(Q_OS_ANDROID)
|
||||||
return mem * BYTES_PER_KIB;
|
glGetIntegerv(GL_GPU_MEMORY_INFO_CURRENT_AVAILABLE_VIDMEM_NVX, &mem[0]);
|
||||||
|
#endif
|
||||||
|
return mem[0] * BYTES_PER_KIB;
|
||||||
case ATI:
|
case ATI:
|
||||||
glGetIntegerv(GL_TEXTURE_FREE_MEMORY_ATI, &mem);
|
#if !defined(Q_OS_ANDROID)
|
||||||
return mem * BYTES_PER_KIB;
|
glGetIntegerv(GL_TEXTURE_FREE_MEMORY_ATI, &mem[0]);
|
||||||
|
#endif
|
||||||
|
return mem[0] * BYTES_PER_KIB;
|
||||||
case MESA:
|
case MESA:
|
||||||
return 0; // Don't know the current value
|
return 0; // Don't know the current value
|
||||||
case Unknown:
|
case Unknown:
|
||||||
|
|
|
@ -451,7 +451,7 @@ void ScriptEngine::executeOnScriptThread(std::function<void()> function, const Q
|
||||||
function();
|
function();
|
||||||
}
|
}
|
||||||
|
|
||||||
void ScriptEngine::waitTillDoneRunning() {
|
void ScriptEngine::waitTillDoneRunning(bool shutdown) {
|
||||||
// Engine should be stopped already, but be defensive
|
// Engine should be stopped already, but be defensive
|
||||||
stop();
|
stop();
|
||||||
|
|
||||||
|
@ -520,12 +520,14 @@ void ScriptEngine::waitTillDoneRunning() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (shutdown) {
|
||||||
// NOTE: This will be called on the main application thread (among other threads) from stopAllScripts.
|
// NOTE: This will be called on the main application thread (among other threads) from stopAllScripts.
|
||||||
// The thread will need to continue to process events, because
|
// The thread will need to continue to process events, because
|
||||||
// the scripts will likely need to marshall messages across to the main thread, e.g.
|
// the scripts will likely need to marshall messages across to the main thread, e.g.
|
||||||
// if they access Settings or Menu in any of their shutdown code. So:
|
// if they access Settings or Menu in any of their shutdown code. So:
|
||||||
// Process events for this thread, allowing invokeMethod calls to pass between threads.
|
// Process events for this thread, allowing invokeMethod calls to pass between threads.
|
||||||
QCoreApplication::processEvents();
|
QCoreApplication::processEvents();
|
||||||
|
}
|
||||||
|
|
||||||
// Avoid a pure busy wait
|
// Avoid a pure busy wait
|
||||||
QThread::yieldCurrentThread();
|
QThread::yieldCurrentThread();
|
||||||
|
|
|
@ -197,7 +197,7 @@ public:
|
||||||
Q_INVOKABLE void stop(bool marshal = false);
|
Q_INVOKABLE void stop(bool marshal = false);
|
||||||
|
|
||||||
// Stop any evaluating scripts and wait for the scripting thread to finish.
|
// Stop any evaluating scripts and wait for the scripting thread to finish.
|
||||||
void waitTillDoneRunning();
|
void waitTillDoneRunning(bool shutdown = false);
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
// NOTE - these are NOT intended to be public interfaces available to scripts, the are only Q_INVOKABLE so we can
|
// NOTE - these are NOT intended to be public interfaces available to scripts, the are only Q_INVOKABLE so we can
|
||||||
|
|
|
@ -182,7 +182,7 @@ void ScriptEngines::shutdownScripting() {
|
||||||
// want any of the scripts final "scriptEnding()" or pending "update()" methods from accessing
|
// want any of the scripts final "scriptEnding()" or pending "update()" methods from accessing
|
||||||
// any application state after we leave this stopAllScripts() method
|
// any application state after we leave this stopAllScripts() method
|
||||||
qCDebug(scriptengine) << "waiting on script:" << scriptName;
|
qCDebug(scriptengine) << "waiting on script:" << scriptName;
|
||||||
scriptEngine->waitTillDoneRunning();
|
scriptEngine->waitTillDoneRunning(true);
|
||||||
qCDebug(scriptengine) << "done waiting on script:" << scriptName;
|
qCDebug(scriptengine) << "done waiting on script:" << scriptName;
|
||||||
}
|
}
|
||||||
// Once the script is stopped, we can remove it from our set
|
// Once the script is stopped, we can remove it from our set
|
||||||
|
|
|
@ -102,7 +102,7 @@ def parse_args():
|
||||||
if True:
|
if True:
|
||||||
args = parser.parse_args()
|
args = parser.parse_args()
|
||||||
else:
|
else:
|
||||||
args = parser.parse_args(['--android', 'questInterface', '--build-root', 'C:/git/hifi/android/apps/questInterface/.externalNativeBuild/cmake/debug/arm64-v8a'])
|
args = parser.parse_args(['--android', 'questInterface', '--build-root', 'C:/git/project-athena/android/apps/questInterface/.externalNativeBuild/cmake/debug/arm64-v8a'])
|
||||||
return args
|
return args
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
|
|
|
@ -117,8 +117,10 @@ var gridTool = new GridTool({
|
||||||
});
|
});
|
||||||
gridTool.setVisible(false);
|
gridTool.setVisible(false);
|
||||||
|
|
||||||
|
var entityShapeVisualizerSessionName = "SHAPE_VISUALIZER_" + Uuid.generate();
|
||||||
|
|
||||||
var EntityShapeVisualizer = Script.require('./modules/entityShapeVisualizer.js');
|
var EntityShapeVisualizer = Script.require('./modules/entityShapeVisualizer.js');
|
||||||
var entityShapeVisualizer = new EntityShapeVisualizer(["Zone"]);
|
var entityShapeVisualizer = new EntityShapeVisualizer(["Zone"], entityShapeVisualizerSessionName);
|
||||||
|
|
||||||
var entityListTool = new EntityListTool(shouldUseEditTabletApp);
|
var entityListTool = new EntityListTool(shouldUseEditTabletApp);
|
||||||
|
|
||||||
|
@ -2908,7 +2910,7 @@ function zoneSortOrder(a, b) {
|
||||||
function getParentState(id) {
|
function getParentState(id) {
|
||||||
var state = "NONE";
|
var state = "NONE";
|
||||||
var properties = Entities.getEntityProperties(id, ["parentID"]);
|
var properties = Entities.getEntityProperties(id, ["parentID"]);
|
||||||
var children = Entities.getChildrenIDs(id);
|
var children = getDomainOnlyChildrenIDs(id);
|
||||||
if (properties.parentID !== Uuid.NULL) {
|
if (properties.parentID !== Uuid.NULL) {
|
||||||
if (children.length > 0) {
|
if (children.length > 0) {
|
||||||
state = "PARENT_CHILDREN";
|
state = "PARENT_CHILDREN";
|
||||||
|
@ -2923,4 +2925,17 @@ function getParentState(id) {
|
||||||
return state;
|
return state;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function getDomainOnlyChildrenIDs(id) {
|
||||||
|
var allChildren = Entities.getChildrenIDs(id);
|
||||||
|
var realChildren = [];
|
||||||
|
var properties;
|
||||||
|
for (var i = 0; i < allChildren.length; i++) {
|
||||||
|
properties = Entities.getEntityProperties(allChildren[i], ["name"]);
|
||||||
|
if (properties.name !== undefined && properties.name !== entityShapeVisualizerSessionName) {
|
||||||
|
realChildren.push(allChildren[i]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return realChildren;
|
||||||
|
}
|
||||||
|
|
||||||
}()); // END LOCAL_SCOPE
|
}()); // END LOCAL_SCOPE
|
||||||
|
|
|
@ -724,12 +724,12 @@ SelectionManager = (function() {
|
||||||
that.addChildrenToSelection = function() {
|
that.addChildrenToSelection = function() {
|
||||||
if (that.hasSelection()) {
|
if (that.hasSelection()) {
|
||||||
for (var i = 0; i < that.selections.length; i++) {
|
for (var i = 0; i < that.selections.length; i++) {
|
||||||
var childrenIDs = Entities.getChildrenIDs(that.selections[i]);
|
var childrenIDs = getDomainOnlyChildrenIDs(that.selections[i]);
|
||||||
var collectNewChildren;
|
var collectNewChildren;
|
||||||
var j;
|
var j;
|
||||||
var k = 0;
|
var k = 0;
|
||||||
do {
|
do {
|
||||||
collectNewChildren = Entities.getChildrenIDs(childrenIDs[k]);
|
collectNewChildren = getDomainOnlyChildrenIDs(childrenIDs[k]);
|
||||||
if (collectNewChildren.length > 0) {
|
if (collectNewChildren.length > 0) {
|
||||||
for (j = 0; j < collectNewChildren.length; j++) {
|
for (j = 0; j < collectNewChildren.length; j++) {
|
||||||
childrenIDs.push(collectNewChildren[j]);
|
childrenIDs.push(collectNewChildren[j]);
|
||||||
|
|
|
@ -116,8 +116,10 @@ function deepCopy(v) {
|
||||||
return JSON.parse(JSON.stringify(v));
|
return JSON.parse(JSON.stringify(v));
|
||||||
}
|
}
|
||||||
|
|
||||||
function EntityShape(entityID) {
|
function EntityShape(entityID, entityShapeVisualizerSessionName) {
|
||||||
this.entityID = entityID;
|
this.entityID = entityID;
|
||||||
|
this.entityShapeVisualizerSessionName = entityShapeVisualizerSessionName;
|
||||||
|
|
||||||
var propertiesForType = getEntityShapePropertiesForType(Entities.getEntityProperties(entityID, REQUESTED_ENTITY_SHAPE_PROPERTIES));
|
var propertiesForType = getEntityShapePropertiesForType(Entities.getEntityProperties(entityID, REQUESTED_ENTITY_SHAPE_PROPERTIES));
|
||||||
|
|
||||||
this.previousPropertiesForType = propertiesForType;
|
this.previousPropertiesForType = propertiesForType;
|
||||||
|
@ -130,6 +132,7 @@ EntityShape.prototype = {
|
||||||
// Create new instance of JS object:
|
// Create new instance of JS object:
|
||||||
var overlayProperties = deepCopy(properties);
|
var overlayProperties = deepCopy(properties);
|
||||||
|
|
||||||
|
overlayProperties.name = this.entityShapeVisualizerSessionName;
|
||||||
overlayProperties.localPosition = Vec3.ZERO;
|
overlayProperties.localPosition = Vec3.ZERO;
|
||||||
overlayProperties.localRotation = Quat.IDENTITY;
|
overlayProperties.localRotation = Quat.IDENTITY;
|
||||||
overlayProperties.canCastShadows = false;
|
overlayProperties.canCastShadows = false;
|
||||||
|
@ -172,11 +175,11 @@ EntityShape.prototype = {
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
function EntityShapeVisualizer(visualizedTypes) {
|
function EntityShapeVisualizer(visualizedTypes, entityShapeVisualizerSessionName) {
|
||||||
this.acceptedEntities = [];
|
this.acceptedEntities = [];
|
||||||
this.ignoredEntities = [];
|
this.ignoredEntities = [];
|
||||||
this.entityShapes = {};
|
this.entityShapes = {};
|
||||||
|
this.entityShapeVisualizerSessionName = entityShapeVisualizerSessionName;
|
||||||
this.visualizedTypes = visualizedTypes;
|
this.visualizedTypes = visualizedTypes;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -185,7 +188,7 @@ EntityShapeVisualizer.prototype = {
|
||||||
if (this.entityShapes[entityID]) {
|
if (this.entityShapes[entityID]) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
this.entityShapes[entityID] = new EntityShape(entityID);
|
this.entityShapes[entityID] = new EntityShape(entityID, this.entityShapeVisualizerSessionName);
|
||||||
|
|
||||||
},
|
},
|
||||||
updateEntity: function(entityID) {
|
updateEntity: function(entityID) {
|
||||||
|
|
|
@ -30,7 +30,8 @@
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
addGotoButton("dev-mobile");
|
addGotoButton("hub.daleglass.net");
|
||||||
addGotoButton("quest-dev");
|
addGotoButton("lq-hub.vircadia.com");
|
||||||
|
addGotoButton("file:///~/serverless/tutorial.json");
|
||||||
|
|
||||||
}()); // END LOCAL_SCOPE
|
}()); // END LOCAL_SCOPE
|
||||||
|
|
Loading…
Reference in a new issue