mirror of
https://github.com/lubosz/overte.git
synced 2025-08-08 04:08:13 +02:00
Merge branch 'master' of github.com:highfidelity/hifi into fix-camera-update
This commit is contained in:
commit
a03cfb835d
64 changed files with 479 additions and 278 deletions
|
@ -138,12 +138,15 @@ def scribeLocalFile='scribe' + EXEC_SUFFIX
|
||||||
|
|
||||||
def scribeFile='scribe_linux_x86_64'
|
def scribeFile='scribe_linux_x86_64'
|
||||||
def scribeChecksum='c98678d9726bd8bbf1bab792acf3ff6c'
|
def scribeChecksum='c98678d9726bd8bbf1bab792acf3ff6c'
|
||||||
|
def scribeVersion='onfeBkJWcJiTwiGOyZPVBjlyhoYQ4Axn'
|
||||||
if (Os.isFamily(Os.FAMILY_MAC)) {
|
if (Os.isFamily(Os.FAMILY_MAC)) {
|
||||||
scribeFile = 'scribe_osx_x86_64'
|
scribeFile = 'scribe_osx_x86_64'
|
||||||
scribeChecksum='a137ad62c1bf7cca739da219544a9a16'
|
scribeChecksum='a137ad62c1bf7cca739da219544a9a16'
|
||||||
|
scribeVersion='kU.Aq512HVe65uRnkFEWQEqeQfaYF2c0'
|
||||||
} else if (Os.isFamily(Os.FAMILY_WINDOWS)) {
|
} else if (Os.isFamily(Os.FAMILY_WINDOWS)) {
|
||||||
scribeFile = 'scribe_win32_x86_64.exe'
|
scribeFile = 'scribe_win32_x86_64.exe'
|
||||||
scribeChecksum='75c2ce9ed45d17de375e3988bfaba816'
|
scribeChecksum='75c2ce9ed45d17de375e3988bfaba816'
|
||||||
|
scribeVersion='24TfWFh1FBY.t6i_LdzAXZYeQOtmQNZp'
|
||||||
}
|
}
|
||||||
|
|
||||||
def options = [
|
def options = [
|
||||||
|
@ -398,7 +401,7 @@ task copyDependencies(dependsOn: [ extractDependencies ]) {
|
||||||
}
|
}
|
||||||
|
|
||||||
task downloadScribe(type: Download) {
|
task downloadScribe(type: Download) {
|
||||||
src baseUrl + scribeFile
|
src baseUrl + scribeFile + '?versionId=' + scribeVersion
|
||||||
dest new File(baseFolder, scribeLocalFile)
|
dest new File(baseFolder, scribeLocalFile)
|
||||||
onlyIfNewer true
|
onlyIfNewer true
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
set(TARGET_NAME assignment-client)
|
set(TARGET_NAME assignment-client)
|
||||||
|
|
||||||
setup_hifi_project(Core Gui Network Script Quick Widgets WebSockets)
|
setup_hifi_project(Core Gui Network Script Quick WebSockets)
|
||||||
|
|
||||||
# Fix up the rpath so macdeployqt works
|
# Fix up the rpath so macdeployqt works
|
||||||
if (APPLE)
|
if (APPLE)
|
||||||
|
|
|
@ -17,9 +17,9 @@ if (ANDROID)
|
||||||
set(BUILD_SHARED_LIBS ON)
|
set(BUILD_SHARED_LIBS ON)
|
||||||
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${ANDROID_APK_OUTPUT_DIR}/libs/${ANDROID_ABI}")
|
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${ANDROID_APK_OUTPUT_DIR}/libs/${ANDROID_ABI}")
|
||||||
|
|
||||||
setup_hifi_library(Gui Widgets AndroidExtras)
|
setup_hifi_library(Gui AndroidExtras)
|
||||||
else ()
|
else ()
|
||||||
setup_hifi_project(Gui Widgets)
|
setup_hifi_project(Gui)
|
||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
include_directories(${Qt5Gui_PRIVATE_INCLUDE_DIRS})
|
include_directories(${Qt5Gui_PRIVATE_INCLUDE_DIRS})
|
||||||
|
|
|
@ -78,7 +78,7 @@ endif ()
|
||||||
|
|
||||||
find_package(
|
find_package(
|
||||||
Qt5 COMPONENTS
|
Qt5 COMPONENTS
|
||||||
Gui Multimedia Network OpenGL Qml Quick Script Svg
|
Gui Widgets Multimedia Network Qml Quick Script Svg
|
||||||
${PLATFORM_QT_COMPONENTS}
|
${PLATFORM_QT_COMPONENTS}
|
||||||
WebChannel WebSockets
|
WebChannel WebSockets
|
||||||
)
|
)
|
||||||
|
@ -269,7 +269,7 @@ endif ()
|
||||||
|
|
||||||
target_link_libraries(
|
target_link_libraries(
|
||||||
${TARGET_NAME}
|
${TARGET_NAME}
|
||||||
Qt5::Gui Qt5::Network Qt5::Multimedia Qt5::OpenGL
|
Qt5::Gui Qt5::Network Qt5::Multimedia Qt5::Widgets
|
||||||
Qt5::Qml Qt5::Quick Qt5::Script Qt5::Svg
|
Qt5::Qml Qt5::Quick Qt5::Script Qt5::Svg
|
||||||
Qt5::WebChannel
|
Qt5::WebChannel
|
||||||
${PLATFORM_QT_LIBRARIES}
|
${PLATFORM_QT_LIBRARIES}
|
||||||
|
|
|
@ -19,21 +19,30 @@ import "../../../controls-uit" as HifiControlsUit
|
||||||
import "../../../controls" as HifiControls
|
import "../../../controls" as HifiControls
|
||||||
import "../wallet" as HifiWallet
|
import "../wallet" as HifiWallet
|
||||||
|
|
||||||
// references XXX from root context
|
|
||||||
|
|
||||||
Rectangle {
|
Rectangle {
|
||||||
HifiConstants { id: hifi; }
|
HifiConstants { id: hifi; }
|
||||||
|
|
||||||
id: root;
|
id: root;
|
||||||
property string marketplaceUrl;
|
property string marketplaceUrl: "";
|
||||||
property string certificateId;
|
property string certificateId: "";
|
||||||
property string itemName: "--";
|
property string itemName: "--";
|
||||||
property string itemOwner: "--";
|
property string itemOwner: "--";
|
||||||
property string itemEdition: "--";
|
property string itemEdition: "--";
|
||||||
property string dateOfPurchase: "--";
|
property string dateOfPurchase: "--";
|
||||||
|
property string itemCost: "--";
|
||||||
|
property string certTitleTextColor: hifi.colors.darkGray;
|
||||||
|
property string certTextColor: hifi.colors.white;
|
||||||
|
property string infoTextColor: hifi.colors.blueAccent;
|
||||||
|
// 0 means replace none
|
||||||
|
// 4 means replace all but "Item Edition"
|
||||||
|
// 5 means replace all 5 replaceable fields
|
||||||
|
property int certInfoReplaceMode: 5;
|
||||||
property bool isLightbox: false;
|
property bool isLightbox: false;
|
||||||
property bool isMyCert: false;
|
property bool isMyCert: false;
|
||||||
property bool isCertificateInvalid: false;
|
property bool useGoldCert: true;
|
||||||
|
property bool certificateInfoPending: true;
|
||||||
|
property int certificateStatus: 0;
|
||||||
|
property bool certificateStatusPending: true;
|
||||||
// Style
|
// Style
|
||||||
color: hifi.colors.faintGray;
|
color: hifi.colors.faintGray;
|
||||||
Connections {
|
Connections {
|
||||||
|
@ -45,71 +54,130 @@ Rectangle {
|
||||||
} else {
|
} else {
|
||||||
root.marketplaceUrl = result.data.marketplace_item_url;
|
root.marketplaceUrl = result.data.marketplace_item_url;
|
||||||
root.isMyCert = result.isMyCert ? result.isMyCert : false;
|
root.isMyCert = result.isMyCert ? result.isMyCert : false;
|
||||||
root.itemOwner = root.isCertificateInvalid ? "--" : (root.isMyCert ? Account.username :
|
|
||||||
"\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022");
|
if (root.certInfoReplaceMode > 3) {
|
||||||
root.itemEdition = root.isCertificateInvalid ? "Uncertified Copy" :
|
root.itemName = result.data.marketplace_item_name;
|
||||||
(result.data.edition_number + "/" + (result.data.limited_run === -1 ? "\u221e" : result.data.limited_run));
|
// "\u2022" is the Unicode character 'BULLET' - it's what's used in password fields on the web, etc
|
||||||
root.dateOfPurchase = root.isCertificateInvalid ? "" : getFormattedDate(result.data.transfer_created_at * 1000);
|
root.itemOwner = root.isMyCert ? Account.username :
|
||||||
root.itemName = result.data.marketplace_item_name;
|
"\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022";
|
||||||
|
root.dateOfPurchase = root.isMyCert ? getFormattedDate(result.data.transfer_created_at * 1000) : "Undisclosed";
|
||||||
|
root.itemCost = (root.isMyCert && result.data.cost !== undefined) ? result.data.cost : "Undisclosed";
|
||||||
|
}
|
||||||
|
if (root.certInfoReplaceMode > 4) {
|
||||||
|
root.itemEdition = result.data.edition_number + "/" + (result.data.limited_run === -1 ? "\u221e" : result.data.limited_run);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (root.certificateStatus === 4) { // CERTIFICATE_STATUS_OWNER_VERIFICATION_FAILED
|
||||||
|
if (root.isMyCert) {
|
||||||
|
errorText.text = "This item is an uncertified copy of an item you purchased.";
|
||||||
|
} else {
|
||||||
|
errorText.text = "The person who placed this item doesn't own it.";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (result.data.invalid_reason || result.data.transfer_status[0] === "failed") {
|
if (result.data.invalid_reason || result.data.transfer_status[0] === "failed") {
|
||||||
titleBarText.text = "Invalid Certificate";
|
root.useGoldCert = false;
|
||||||
titleBarText.color = hifi.colors.redHighlight;
|
root.certTitleTextColor = hifi.colors.redHighlight;
|
||||||
|
root.certTextColor = hifi.colors.redHighlight;
|
||||||
|
root.infoTextColor = hifi.colors.redHighlight;
|
||||||
|
titleBarText.text = "Certificate\nNo Longer Valid";
|
||||||
popText.text = "";
|
popText.text = "";
|
||||||
|
showInMarketplaceButton.visible = false;
|
||||||
|
// "Edition" text previously set above in this function
|
||||||
|
// "Owner" text previously set above in this function
|
||||||
|
// "Purchase Date" text previously set above in this function
|
||||||
|
// "Purchase Price" text previously set above in this function
|
||||||
if (result.data.invalid_reason) {
|
if (result.data.invalid_reason) {
|
||||||
errorText.text = result.data.invalid_reason;
|
errorText.text = result.data.invalid_reason;
|
||||||
}
|
}
|
||||||
} else if (result.data.transfer_status[0] === "pending") {
|
} else if (result.data.transfer_status[0] === "pending") {
|
||||||
|
root.useGoldCert = false;
|
||||||
|
root.certTitleTextColor = hifi.colors.redHighlight;
|
||||||
|
root.certTextColor = hifi.colors.redHighlight;
|
||||||
|
root.infoTextColor = hifi.colors.redHighlight;
|
||||||
titleBarText.text = "Certificate Pending";
|
titleBarText.text = "Certificate Pending";
|
||||||
|
popText.text = "";
|
||||||
|
showInMarketplaceButton.visible = true;
|
||||||
|
// "Edition" text previously set above in this function
|
||||||
|
// "Owner" text previously set above in this function
|
||||||
|
// "Purchase Date" text previously set above in this function
|
||||||
|
// "Purchase Price" text previously set above in this function
|
||||||
errorText.text = "The status of this item is still pending confirmation. If the purchase is not confirmed, " +
|
errorText.text = "The status of this item is still pending confirmation. If the purchase is not confirmed, " +
|
||||||
"this entity will be cleaned up by the domain.";
|
"this entity will be cleaned up by the domain.";
|
||||||
errorText.color = hifi.colors.baseGray;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
root.certificateInfoPending = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
onUpdateCertificateStatus: {
|
onUpdateCertificateStatus: {
|
||||||
if (certStatus === 1) { // CERTIFICATE_STATUS_VERIFICATION_SUCCESS
|
root.certificateStatus = certStatus;
|
||||||
// NOP
|
if (root.certificateStatus === 1) { // CERTIFICATE_STATUS_VERIFICATION_SUCCESS
|
||||||
} else if (certStatus === 2) { // CERTIFICATE_STATUS_VERIFICATION_TIMEOUT
|
root.useGoldCert = true;
|
||||||
root.isCertificateInvalid = true;
|
root.certTitleTextColor = hifi.colors.darkGray;
|
||||||
errorText.text = "Verification of this certificate timed out.";
|
root.certTextColor = hifi.colors.white;
|
||||||
errorText.color = hifi.colors.redHighlight;
|
root.infoTextColor = hifi.colors.blueAccent;
|
||||||
} else if (certStatus === 3) { // CERTIFICATE_STATUS_STATIC_VERIFICATION_FAILED
|
titleBarText.text = "Certificate";
|
||||||
root.isCertificateInvalid = true;
|
popText.text = "PROOF OF PROVENANCE";
|
||||||
titleBarText.text = "Invalid Certificate";
|
showInMarketplaceButton.visible = true;
|
||||||
titleBarText.color = hifi.colors.redHighlight;
|
root.certInfoReplaceMode = 5;
|
||||||
|
// "Item Name" text will be set in "onCertificateInfoResult()"
|
||||||
|
// "Edition" text will be set in "onCertificateInfoResult()"
|
||||||
|
// "Owner" text will be set in "onCertificateInfoResult()"
|
||||||
|
// "Purchase Date" text will be set in "onCertificateInfoResult()"
|
||||||
|
// "Purchase Price" text will be set in "onCertificateInfoResult()"
|
||||||
|
errorText.text = "";
|
||||||
|
} else if (root.certificateStatus === 2) { // CERTIFICATE_STATUS_VERIFICATION_TIMEOUT
|
||||||
|
root.useGoldCert = false;
|
||||||
|
root.certTitleTextColor = hifi.colors.redHighlight;
|
||||||
|
root.certTextColor = hifi.colors.redHighlight;
|
||||||
|
root.infoTextColor = hifi.colors.redHighlight;
|
||||||
|
titleBarText.text = "Request Timed Out";
|
||||||
popText.text = "";
|
popText.text = "";
|
||||||
|
showInMarketplaceButton.visible = false;
|
||||||
|
root.certInfoReplaceMode = 0;
|
||||||
|
root.itemName = "";
|
||||||
|
root.itemEdition = "";
|
||||||
root.itemOwner = "";
|
root.itemOwner = "";
|
||||||
dateOfPurchaseHeader.text = "";
|
|
||||||
root.dateOfPurchase = "";
|
root.dateOfPurchase = "";
|
||||||
root.itemEdition = "Uncertified Copy";
|
root.itemCost = "";
|
||||||
|
errorText.text = "Your request to inspect this item timed out. Please try again later.";
|
||||||
|
} else if (root.certificateStatus === 3) { // CERTIFICATE_STATUS_STATIC_VERIFICATION_FAILED
|
||||||
|
root.useGoldCert = false;
|
||||||
|
root.certTitleTextColor = hifi.colors.redHighlight;
|
||||||
|
root.certTextColor = hifi.colors.redHighlight;
|
||||||
|
root.infoTextColor = hifi.colors.redHighlight;
|
||||||
|
titleBarText.text = "Certificate\nNo Longer Valid";
|
||||||
|
popText.text = "";
|
||||||
|
showInMarketplaceButton.visible = true;
|
||||||
|
root.certInfoReplaceMode = 5;
|
||||||
|
// "Item Name" text will be set in "onCertificateInfoResult()"
|
||||||
|
// "Edition" text will be set in "onCertificateInfoResult()"
|
||||||
|
// "Owner" text will be set in "onCertificateInfoResult()"
|
||||||
|
// "Purchase Date" text will be set in "onCertificateInfoResult()"
|
||||||
|
// "Purchase Price" text will be set in "onCertificateInfoResult()"
|
||||||
errorText.text = "The information associated with this item has been modified and it no longer matches the original certified item.";
|
errorText.text = "The information associated with this item has been modified and it no longer matches the original certified item.";
|
||||||
errorText.color = hifi.colors.baseGray;
|
} else if (root.certificateStatus === 4) { // CERTIFICATE_STATUS_OWNER_VERIFICATION_FAILED
|
||||||
} else if (certStatus === 4) { // CERTIFICATE_STATUS_OWNER_VERIFICATION_FAILED
|
root.useGoldCert = false;
|
||||||
root.isCertificateInvalid = true;
|
root.certTitleTextColor = hifi.colors.redHighlight;
|
||||||
|
root.certTextColor = hifi.colors.redHighlight;
|
||||||
|
root.infoTextColor = hifi.colors.redHighlight;
|
||||||
titleBarText.text = "Invalid Certificate";
|
titleBarText.text = "Invalid Certificate";
|
||||||
titleBarText.color = hifi.colors.redHighlight;
|
|
||||||
|
|
||||||
popText.text = "";
|
popText.text = "";
|
||||||
root.itemOwner = "";
|
showInMarketplaceButton.visible = true;
|
||||||
dateOfPurchaseHeader.text = "";
|
root.certInfoReplaceMode = 4;
|
||||||
root.dateOfPurchase = "";
|
// "Item Name" text will be set in "onCertificateInfoResult()"
|
||||||
root.itemEdition = "Uncertified Copy";
|
root.itemEdition = "Uncertified Copy"
|
||||||
|
// "Owner" text will be set in "onCertificateInfoResult()"
|
||||||
errorText.text = "The avatar who rezzed this item doesn't own it.";
|
// "Purchase Date" text will be set in "onCertificateInfoResult()"
|
||||||
errorText.color = hifi.colors.baseGray;
|
// "Purchase Price" text will be set in "onCertificateInfoResult()"
|
||||||
|
// "Error Text" text will be set in "onCertificateInfoResult()"
|
||||||
} else {
|
} else {
|
||||||
console.log("Unknown certificate status received from ledger signal!");
|
console.log("Unknown certificate status received from ledger signal!");
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
root.certificateStatusPending = false;
|
||||||
|
// We've gotten cert status - we are GO on getting the cert info
|
||||||
onCertificateIdChanged: {
|
Commerce.certificateInfo(root.certificateId);
|
||||||
if (certificateId !== "") {
|
|
||||||
Commerce.certificateInfo(certificateId);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -122,9 +190,35 @@ Rectangle {
|
||||||
hoverEnabled: true;
|
hoverEnabled: true;
|
||||||
}
|
}
|
||||||
|
|
||||||
Image {
|
Rectangle {
|
||||||
|
id: loadingOverlay;
|
||||||
|
z: 998;
|
||||||
|
|
||||||
|
visible: root.certificateInfoPending || root.certificateStatusPending;
|
||||||
anchors.fill: parent;
|
anchors.fill: parent;
|
||||||
source: "images/cert-bg.jpg";
|
color: Qt.rgba(0.0, 0.0, 0.0, 0.7);
|
||||||
|
|
||||||
|
// This object is always used in a popup or full-screen Wallet section.
|
||||||
|
// This MouseArea is used to prevent a user from being
|
||||||
|
// able to click on a button/mouseArea underneath the popup/section.
|
||||||
|
MouseArea {
|
||||||
|
anchors.fill: parent;
|
||||||
|
propagateComposedEvents: false;
|
||||||
|
}
|
||||||
|
|
||||||
|
AnimatedImage {
|
||||||
|
source: "../common/images/loader.gif"
|
||||||
|
width: 96;
|
||||||
|
height: width;
|
||||||
|
anchors.verticalCenter: parent.verticalCenter;
|
||||||
|
anchors.horizontalCenter: parent.horizontalCenter;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Image {
|
||||||
|
id: backgroundImage;
|
||||||
|
anchors.fill: parent;
|
||||||
|
source: root.useGoldCert ? "images/cert-bg-gold-split.png" : "images/nocert-bg-split.png";
|
||||||
}
|
}
|
||||||
|
|
||||||
// Title text
|
// Title text
|
||||||
|
@ -137,16 +231,17 @@ Rectangle {
|
||||||
anchors.top: parent.top;
|
anchors.top: parent.top;
|
||||||
anchors.topMargin: 40;
|
anchors.topMargin: 40;
|
||||||
anchors.left: parent.left;
|
anchors.left: parent.left;
|
||||||
anchors.leftMargin: 45;
|
anchors.leftMargin: 36;
|
||||||
anchors.right: parent.right;
|
anchors.right: parent.right;
|
||||||
|
anchors.rightMargin: 8;
|
||||||
height: paintedHeight;
|
height: paintedHeight;
|
||||||
// Style
|
// Style
|
||||||
color: hifi.colors.darkGray;
|
color: root.certTitleTextColor;
|
||||||
|
wrapMode: Text.WordWrap;
|
||||||
}
|
}
|
||||||
// Title text
|
// Title text
|
||||||
RalewayRegular {
|
RalewayRegular {
|
||||||
id: popText;
|
id: popText;
|
||||||
text: "Proof of Provenance";
|
|
||||||
// Text size
|
// Text size
|
||||||
size: 16;
|
size: 16;
|
||||||
// Anchors
|
// Anchors
|
||||||
|
@ -154,9 +249,38 @@ Rectangle {
|
||||||
anchors.topMargin: 4;
|
anchors.topMargin: 4;
|
||||||
anchors.left: titleBarText.left;
|
anchors.left: titleBarText.left;
|
||||||
anchors.right: titleBarText.right;
|
anchors.right: titleBarText.right;
|
||||||
height: paintedHeight;
|
height: text === "" ? 0 : paintedHeight;
|
||||||
// Style
|
// Style
|
||||||
color: hifi.colors.darkGray;
|
color: root.certTitleTextColor;
|
||||||
|
}
|
||||||
|
|
||||||
|
// "Close" button
|
||||||
|
HiFiGlyphs {
|
||||||
|
id: closeGlyphButton;
|
||||||
|
text: hifi.glyphs.close;
|
||||||
|
color: hifi.colors.white;
|
||||||
|
size: 26;
|
||||||
|
anchors.top: parent.top;
|
||||||
|
anchors.topMargin: 10;
|
||||||
|
anchors.right: parent.right;
|
||||||
|
anchors.rightMargin: 10;
|
||||||
|
MouseArea {
|
||||||
|
anchors.fill: parent;
|
||||||
|
hoverEnabled: true;
|
||||||
|
onEntered: {
|
||||||
|
parent.text = hifi.glyphs.closeInverted;
|
||||||
|
}
|
||||||
|
onExited: {
|
||||||
|
parent.text = hifi.glyphs.close;
|
||||||
|
}
|
||||||
|
onClicked: {
|
||||||
|
if (root.isLightbox) {
|
||||||
|
root.visible = false;
|
||||||
|
} else {
|
||||||
|
sendToScript({method: 'inspectionCertificate_closeClicked', closeGoesToPurchases: root.closeGoesToPurchases});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
|
@ -164,11 +288,13 @@ Rectangle {
|
||||||
//
|
//
|
||||||
Item {
|
Item {
|
||||||
id: certificateContainer;
|
id: certificateContainer;
|
||||||
anchors.top: popText.bottom;
|
anchors.top: titleBarText.top;
|
||||||
anchors.topMargin: 30;
|
anchors.topMargin: 110;
|
||||||
anchors.bottom: buttonsContainer.top;
|
anchors.bottom: infoContainer.top;
|
||||||
anchors.left: parent.left;
|
anchors.left: parent.left;
|
||||||
|
anchors.leftMargin: titleBarText.anchors.leftMargin;
|
||||||
anchors.right: parent.right;
|
anchors.right: parent.right;
|
||||||
|
anchors.rightMargin: 24;
|
||||||
|
|
||||||
RalewayRegular {
|
RalewayRegular {
|
||||||
id: itemNameHeader;
|
id: itemNameHeader;
|
||||||
|
@ -178,9 +304,7 @@ Rectangle {
|
||||||
// Anchors
|
// Anchors
|
||||||
anchors.top: parent.top;
|
anchors.top: parent.top;
|
||||||
anchors.left: parent.left;
|
anchors.left: parent.left;
|
||||||
anchors.leftMargin: 45;
|
|
||||||
anchors.right: parent.right;
|
anchors.right: parent.right;
|
||||||
anchors.rightMargin: 16;
|
|
||||||
height: paintedHeight;
|
height: paintedHeight;
|
||||||
// Style
|
// Style
|
||||||
color: hifi.colors.darkGray;
|
color: hifi.colors.darkGray;
|
||||||
|
@ -197,79 +321,30 @@ Rectangle {
|
||||||
anchors.right: itemNameHeader.right;
|
anchors.right: itemNameHeader.right;
|
||||||
height: paintedHeight;
|
height: paintedHeight;
|
||||||
// Style
|
// Style
|
||||||
color: hifi.colors.white;
|
color: root.certTextColor;
|
||||||
elide: Text.ElideRight;
|
elide: Text.ElideRight;
|
||||||
MouseArea {
|
MouseArea {
|
||||||
|
enabled: showInMarketplaceButton.visible;
|
||||||
anchors.fill: parent;
|
anchors.fill: parent;
|
||||||
hoverEnabled: enabled;
|
hoverEnabled: enabled;
|
||||||
onClicked: {
|
onClicked: {
|
||||||
sendToScript({method: 'inspectionCertificate_showInMarketplaceClicked', marketplaceUrl: root.marketplaceUrl});
|
sendToScript({method: 'inspectionCertificate_showInMarketplaceClicked', marketplaceUrl: root.marketplaceUrl});
|
||||||
}
|
}
|
||||||
onEntered: itemName.color = hifi.colors.blueHighlight;
|
onEntered: itemName.color = hifi.colors.blueHighlight;
|
||||||
onExited: itemName.color = hifi.colors.white;
|
onExited: itemName.color = root.certTextColor;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
RalewayRegular {
|
|
||||||
id: ownedByHeader;
|
|
||||||
text: "OWNER";
|
|
||||||
// Text size
|
|
||||||
size: 16;
|
|
||||||
// Anchors
|
|
||||||
anchors.top: itemName.bottom;
|
|
||||||
anchors.topMargin: 28;
|
|
||||||
anchors.left: parent.left;
|
|
||||||
anchors.leftMargin: 45;
|
|
||||||
anchors.right: parent.right;
|
|
||||||
anchors.rightMargin: 16;
|
|
||||||
height: paintedHeight;
|
|
||||||
// Style
|
|
||||||
color: hifi.colors.darkGray;
|
|
||||||
}
|
|
||||||
RalewayRegular {
|
|
||||||
id: ownedBy;
|
|
||||||
text: root.itemOwner;
|
|
||||||
// Text size
|
|
||||||
size: 22;
|
|
||||||
// Anchors
|
|
||||||
anchors.top: ownedByHeader.bottom;
|
|
||||||
anchors.topMargin: 8;
|
|
||||||
anchors.left: ownedByHeader.left;
|
|
||||||
height: paintedHeight;
|
|
||||||
// Style
|
|
||||||
color: hifi.colors.white;
|
|
||||||
elide: Text.ElideRight;
|
|
||||||
}
|
|
||||||
AnonymousProRegular {
|
|
||||||
id: isMyCertText;
|
|
||||||
visible: root.isMyCert && !root.isCertificateInvalid;
|
|
||||||
text: "(Private)";
|
|
||||||
size: 18;
|
|
||||||
// Anchors
|
|
||||||
anchors.top: ownedBy.top;
|
|
||||||
anchors.topMargin: 4;
|
|
||||||
anchors.bottom: ownedBy.bottom;
|
|
||||||
anchors.left: ownedBy.right;
|
|
||||||
anchors.leftMargin: 6;
|
|
||||||
anchors.right: ownedByHeader.right;
|
|
||||||
// Style
|
|
||||||
color: hifi.colors.white;
|
|
||||||
elide: Text.ElideRight;
|
|
||||||
verticalAlignment: Text.AlignVCenter;
|
|
||||||
}
|
|
||||||
|
|
||||||
RalewayRegular {
|
RalewayRegular {
|
||||||
id: editionHeader;
|
id: editionHeader;
|
||||||
text: "EDITION";
|
text: "EDITION";
|
||||||
// Text size
|
// Text size
|
||||||
size: 16;
|
size: 16;
|
||||||
// Anchors
|
// Anchors
|
||||||
anchors.top: ownedBy.bottom;
|
anchors.top: itemName.bottom;
|
||||||
anchors.topMargin: 28;
|
anchors.topMargin: 28;
|
||||||
anchors.left: parent.left;
|
anchors.left: parent.left;
|
||||||
anchors.leftMargin: 45;
|
|
||||||
anchors.right: parent.right;
|
anchors.right: parent.right;
|
||||||
anchors.rightMargin: 16;
|
|
||||||
height: paintedHeight;
|
height: paintedHeight;
|
||||||
// Style
|
// Style
|
||||||
color: hifi.colors.darkGray;
|
color: hifi.colors.darkGray;
|
||||||
|
@ -286,21 +361,117 @@ Rectangle {
|
||||||
anchors.right: editionHeader.right;
|
anchors.right: editionHeader.right;
|
||||||
height: paintedHeight;
|
height: paintedHeight;
|
||||||
// Style
|
// Style
|
||||||
color: hifi.colors.white;
|
color: root.certTextColor;
|
||||||
|
}
|
||||||
|
|
||||||
|
// "Show In Marketplace" button
|
||||||
|
HifiControlsUit.Button {
|
||||||
|
id: showInMarketplaceButton;
|
||||||
|
enabled: root.marketplaceUrl;
|
||||||
|
color: hifi.buttons.blue;
|
||||||
|
colorScheme: hifi.colorSchemes.light;
|
||||||
|
anchors.bottom: parent.bottom;
|
||||||
|
anchors.bottomMargin: 48;
|
||||||
|
anchors.right: parent.right;
|
||||||
|
width: 200;
|
||||||
|
height: 40;
|
||||||
|
text: "View In Market"
|
||||||
|
onClicked: {
|
||||||
|
sendToScript({method: 'inspectionCertificate_showInMarketplaceClicked', marketplaceUrl: root.marketplaceUrl});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//
|
||||||
|
// "CERTIFICATE" END
|
||||||
|
//
|
||||||
|
|
||||||
|
//
|
||||||
|
// "INFO CONTAINER" START
|
||||||
|
//
|
||||||
|
Item {
|
||||||
|
id: infoContainer;
|
||||||
|
anchors.bottom: parent.bottom;
|
||||||
|
anchors.left: parent.left;
|
||||||
|
anchors.leftMargin: titleBarText.anchors.leftMargin;
|
||||||
|
anchors.right: parent.right;
|
||||||
|
anchors.rightMargin: 24;
|
||||||
|
height: root.useGoldCert ? 220 : 372;
|
||||||
|
|
||||||
|
RalewayRegular {
|
||||||
|
id: errorText;
|
||||||
|
visible: !root.useGoldCert;
|
||||||
|
// Text size
|
||||||
|
size: 20;
|
||||||
|
// Anchors
|
||||||
|
anchors.top: parent.top;
|
||||||
|
anchors.topMargin: 36;
|
||||||
|
anchors.left: parent.left;
|
||||||
|
anchors.right: parent.right;
|
||||||
|
height: 116;
|
||||||
|
// Style
|
||||||
|
wrapMode: Text.WordWrap;
|
||||||
|
color: hifi.colors.baseGray;
|
||||||
|
verticalAlignment: Text.AlignTop;
|
||||||
|
}
|
||||||
|
|
||||||
|
RalewayRegular {
|
||||||
|
id: ownedByHeader;
|
||||||
|
text: "OWNER";
|
||||||
|
// Text size
|
||||||
|
size: 16;
|
||||||
|
// Anchors
|
||||||
|
anchors.top: errorText.visible ? errorText.bottom : parent.top;
|
||||||
|
anchors.topMargin: 28;
|
||||||
|
anchors.left: parent.left;
|
||||||
|
anchors.right: parent.right;
|
||||||
|
height: paintedHeight;
|
||||||
|
// Style
|
||||||
|
color: hifi.colors.darkGray;
|
||||||
|
}
|
||||||
|
|
||||||
|
RalewayRegular {
|
||||||
|
id: ownedBy;
|
||||||
|
text: root.itemOwner;
|
||||||
|
// Text size
|
||||||
|
size: 22;
|
||||||
|
// Anchors
|
||||||
|
anchors.top: ownedByHeader.bottom;
|
||||||
|
anchors.topMargin: 8;
|
||||||
|
anchors.left: ownedByHeader.left;
|
||||||
|
height: paintedHeight;
|
||||||
|
// Style
|
||||||
|
color: root.infoTextColor;
|
||||||
|
elide: Text.ElideRight;
|
||||||
|
}
|
||||||
|
AnonymousProRegular {
|
||||||
|
id: isMyCertText;
|
||||||
|
visible: root.isMyCert && ownedBy.text !== "--" && ownedBy.text !== "";
|
||||||
|
text: "(Private)";
|
||||||
|
size: 18;
|
||||||
|
// Anchors
|
||||||
|
anchors.top: ownedBy.top;
|
||||||
|
anchors.topMargin: 4;
|
||||||
|
anchors.bottom: ownedBy.bottom;
|
||||||
|
anchors.left: ownedBy.right;
|
||||||
|
anchors.leftMargin: 6;
|
||||||
|
anchors.right: ownedByHeader.right;
|
||||||
|
// Style
|
||||||
|
color: root.infoTextColor;
|
||||||
|
elide: Text.ElideRight;
|
||||||
|
verticalAlignment: Text.AlignVCenter;
|
||||||
}
|
}
|
||||||
|
|
||||||
RalewayRegular {
|
RalewayRegular {
|
||||||
id: dateOfPurchaseHeader;
|
id: dateOfPurchaseHeader;
|
||||||
text: "DATE OF PURCHASE";
|
text: "PURCHASE DATE";
|
||||||
// Text size
|
// Text size
|
||||||
size: 16;
|
size: 16;
|
||||||
// Anchors
|
// Anchors
|
||||||
anchors.top: edition.bottom;
|
anchors.top: ownedBy.bottom;
|
||||||
anchors.topMargin: 28;
|
anchors.topMargin: 28;
|
||||||
anchors.left: parent.left;
|
anchors.left: parent.left;
|
||||||
anchors.leftMargin: 45;
|
anchors.right: parent.horizontalCenter;
|
||||||
anchors.right: parent.right;
|
anchors.rightMargin: 8;
|
||||||
anchors.rightMargin: 16;
|
|
||||||
height: paintedHeight;
|
height: paintedHeight;
|
||||||
// Style
|
// Style
|
||||||
color: hifi.colors.darkGray;
|
color: hifi.colors.darkGray;
|
||||||
|
@ -317,73 +488,58 @@ Rectangle {
|
||||||
anchors.right: dateOfPurchaseHeader.right;
|
anchors.right: dateOfPurchaseHeader.right;
|
||||||
height: paintedHeight;
|
height: paintedHeight;
|
||||||
// Style
|
// Style
|
||||||
color: hifi.colors.white;
|
color: root.infoTextColor;
|
||||||
}
|
}
|
||||||
|
|
||||||
RalewayRegular {
|
RalewayRegular {
|
||||||
id: errorText;
|
id: priceHeader;
|
||||||
|
text: "PURCHASE PRICE";
|
||||||
// Text size
|
// Text size
|
||||||
size: 20;
|
size: 16;
|
||||||
// Anchors
|
// Anchors
|
||||||
anchors.top: dateOfPurchase.bottom;
|
anchors.top: ownedBy.bottom;
|
||||||
anchors.topMargin: 36;
|
anchors.topMargin: 28;
|
||||||
anchors.left: dateOfPurchase.left;
|
anchors.left: parent.horizontalCenter;
|
||||||
anchors.right: dateOfPurchase.right;
|
|
||||||
anchors.bottom: parent.bottom;
|
|
||||||
// Style
|
|
||||||
wrapMode: Text.WordWrap;
|
|
||||||
color: hifi.colors.redHighlight;
|
|
||||||
verticalAlignment: Text.AlignTop;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
//
|
|
||||||
// "CERTIFICATE" END
|
|
||||||
//
|
|
||||||
|
|
||||||
Item {
|
|
||||||
id: buttonsContainer;
|
|
||||||
anchors.bottom: parent.bottom;
|
|
||||||
anchors.bottomMargin: 30;
|
|
||||||
anchors.left: parent.left;
|
|
||||||
anchors.right: parent.right;
|
|
||||||
height: 50;
|
|
||||||
|
|
||||||
// "Cancel" button
|
|
||||||
HifiControlsUit.Button {
|
|
||||||
color: hifi.buttons.noneBorderlessWhite;
|
|
||||||
colorScheme: hifi.colorSchemes.light;
|
|
||||||
anchors.top: parent.top;
|
|
||||||
anchors.left: parent.left;
|
|
||||||
anchors.leftMargin: 30;
|
|
||||||
width: parent.width/2 - 50;
|
|
||||||
height: 50;
|
|
||||||
text: "close";
|
|
||||||
onClicked: {
|
|
||||||
if (root.isLightbox) {
|
|
||||||
root.visible = false;
|
|
||||||
} else {
|
|
||||||
sendToScript({method: 'inspectionCertificate_closeClicked', closeGoesToPurchases: root.closeGoesToPurchases});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// "Show In Marketplace" button
|
|
||||||
HifiControlsUit.Button {
|
|
||||||
id: showInMarketplaceButton;
|
|
||||||
enabled: root.marketplaceUrl;
|
|
||||||
color: hifi.buttons.blue;
|
|
||||||
colorScheme: hifi.colorSchemes.light;
|
|
||||||
anchors.top: parent.top;
|
|
||||||
anchors.right: parent.right;
|
anchors.right: parent.right;
|
||||||
anchors.rightMargin: 30;
|
height: paintedHeight;
|
||||||
width: parent.width/2 - 50;
|
// Style
|
||||||
height: 50;
|
color: hifi.colors.darkGray;
|
||||||
text: "View In Market"
|
}
|
||||||
onClicked: {
|
HiFiGlyphs {
|
||||||
sendToScript({method: 'inspectionCertificate_showInMarketplaceClicked', marketplaceUrl: root.marketplaceUrl});
|
id: hfcGlyph;
|
||||||
}
|
visible: priceText.text !== "Undisclosed" && priceText.text !== "";
|
||||||
|
text: hifi.glyphs.hfc;
|
||||||
|
// Size
|
||||||
|
size: 24;
|
||||||
|
// Anchors
|
||||||
|
anchors.top: priceHeader.bottom;
|
||||||
|
anchors.topMargin: 8;
|
||||||
|
anchors.left: priceHeader.left;
|
||||||
|
width: visible ? paintedWidth + 6 : 0;
|
||||||
|
height: 40;
|
||||||
|
// Style
|
||||||
|
color: root.infoTextColor;
|
||||||
|
verticalAlignment: Text.AlignTop;
|
||||||
|
horizontalAlignment: Text.AlignLeft;
|
||||||
|
}
|
||||||
|
AnonymousProRegular {
|
||||||
|
id: priceText;
|
||||||
|
text: root.itemCost;
|
||||||
|
// Text size
|
||||||
|
size: 18;
|
||||||
|
// Anchors
|
||||||
|
anchors.top: priceHeader.bottom;
|
||||||
|
anchors.topMargin: 8;
|
||||||
|
anchors.left: hfcGlyph.right;
|
||||||
|
anchors.right: priceHeader.right;
|
||||||
|
height: paintedHeight;
|
||||||
|
// Style
|
||||||
|
color: root.infoTextColor;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
//
|
||||||
|
// "INFO CONTAINER" END
|
||||||
|
//
|
||||||
|
|
||||||
//
|
//
|
||||||
// FUNCTION DEFINITIONS START
|
// FUNCTION DEFINITIONS START
|
||||||
|
@ -404,19 +560,11 @@ Rectangle {
|
||||||
function fromScript(message) {
|
function fromScript(message) {
|
||||||
switch (message.method) {
|
switch (message.method) {
|
||||||
case 'inspectionCertificate_setCertificateId':
|
case 'inspectionCertificate_setCertificateId':
|
||||||
|
resetCert(false);
|
||||||
root.certificateId = message.certificateId;
|
root.certificateId = message.certificateId;
|
||||||
break;
|
break;
|
||||||
case 'inspectionCertificate_resetCert':
|
case 'inspectionCertificate_resetCert':
|
||||||
titleBarText.text = "Certificate";
|
resetCert(true);
|
||||||
popText.text = "PROOF OF PURCHASE";
|
|
||||||
root.certificateId = "";
|
|
||||||
root.itemName = "--";
|
|
||||||
root.itemOwner = "--";
|
|
||||||
root.itemEdition = "--";
|
|
||||||
root.dateOfPurchase = "--";
|
|
||||||
root.marketplaceUrl = "";
|
|
||||||
root.isMyCert = false;
|
|
||||||
errorText.text = "";
|
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
console.log('Unrecognized message from marketplaces.js:', JSON.stringify(message));
|
console.log('Unrecognized message from marketplaces.js:', JSON.stringify(message));
|
||||||
|
@ -424,7 +572,33 @@ Rectangle {
|
||||||
}
|
}
|
||||||
signal sendToScript(var message);
|
signal sendToScript(var message);
|
||||||
|
|
||||||
|
function resetCert(alsoResetCertID) {
|
||||||
|
if (alsoResetCertID) {
|
||||||
|
root.certificateId = "";
|
||||||
|
}
|
||||||
|
root.certInfoReplaceMode = 5;
|
||||||
|
root.certificateInfoPending = true;
|
||||||
|
root.certificateStatusPending = true;
|
||||||
|
root.useGoldCert = true;
|
||||||
|
root.certTitleTextColor = hifi.colors.darkGray;
|
||||||
|
root.certTextColor = hifi.colors.white;
|
||||||
|
root.infoTextColor = hifi.colors.blueAccent;
|
||||||
|
titleBarText.text = "Certificate";
|
||||||
|
popText.text = "";
|
||||||
|
root.itemName = "--";
|
||||||
|
root.itemOwner = "--";
|
||||||
|
root.itemEdition = "--";
|
||||||
|
root.dateOfPurchase = "--";
|
||||||
|
root.marketplaceUrl = "";
|
||||||
|
root.itemCost = "--";
|
||||||
|
root.isMyCert = false;
|
||||||
|
errorText.text = "";
|
||||||
|
}
|
||||||
|
|
||||||
function getFormattedDate(timestamp) {
|
function getFormattedDate(timestamp) {
|
||||||
|
if (timestamp === "--") {
|
||||||
|
return "--";
|
||||||
|
}
|
||||||
function addLeadingZero(n) {
|
function addLeadingZero(n) {
|
||||||
return n < 10 ? '0' + n : '' + n;
|
return n < 10 ? '0' + n : '' + n;
|
||||||
}
|
}
|
||||||
|
@ -449,7 +623,7 @@ Rectangle {
|
||||||
|
|
||||||
var min = addLeadingZero(a.getMinutes());
|
var min = addLeadingZero(a.getMinutes());
|
||||||
var sec = addLeadingZero(a.getSeconds());
|
var sec = addLeadingZero(a.getSeconds());
|
||||||
return year + '-' + month + '-' + day + '<br>' + drawnHour + ':' + min + amOrPm;
|
return year + '-' + month + '-' + day + ' ' + drawnHour + ':' + min + amOrPm;
|
||||||
}
|
}
|
||||||
//
|
//
|
||||||
// FUNCTION DEFINITIONS END
|
// FUNCTION DEFINITIONS END
|
||||||
|
|
Binary file not shown.
After Width: | Height: | Size: 185 KiB |
Binary file not shown.
Before Width: | Height: | Size: 62 KiB |
Binary file not shown.
After Width: | Height: | Size: 17 KiB |
|
@ -1115,7 +1115,7 @@ Item {
|
||||||
|
|
||||||
AnimatedImage {
|
AnimatedImage {
|
||||||
id: sendingMoneyImage;
|
id: sendingMoneyImage;
|
||||||
source: "./images/loader.gif"
|
source: "../../common/images/loader.gif"
|
||||||
width: 96;
|
width: 96;
|
||||||
height: width;
|
height: width;
|
||||||
anchors.verticalCenter: parent.verticalCenter;
|
anchors.verticalCenter: parent.verticalCenter;
|
||||||
|
|
Binary file not shown.
Before Width: | Height: | Size: 58 KiB |
|
@ -1,6 +1,6 @@
|
||||||
set(TARGET_NAME avatars-renderer)
|
set(TARGET_NAME avatars-renderer)
|
||||||
AUTOSCRIBE_SHADER_LIB(gpu graphics render render-utils)
|
AUTOSCRIBE_SHADER_LIB(gpu graphics render render-utils)
|
||||||
setup_hifi_library(Widgets Network Script)
|
setup_hifi_library(Network Script)
|
||||||
link_hifi_libraries(shared gpu graphics animation model-networking script-engine render render-utils image trackers entities-renderer)
|
link_hifi_libraries(shared gpu graphics animation model-networking script-engine render render-utils image trackers entities-renderer)
|
||||||
include_hifi_library_headers(avatars)
|
include_hifi_library_headers(avatars)
|
||||||
include_hifi_library_headers(networking)
|
include_hifi_library_headers(networking)
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
set(TARGET_NAME display-plugins)
|
set(TARGET_NAME display-plugins)
|
||||||
AUTOSCRIBE_SHADER_LIB(gpu display-plugins)
|
AUTOSCRIBE_SHADER_LIB(gpu display-plugins)
|
||||||
setup_hifi_library(OpenGL)
|
setup_hifi_library(Gui)
|
||||||
link_hifi_libraries(shared plugins ui-plugins gl ui render-utils ${PLATFORM_GL_BACKEND})
|
link_hifi_libraries(shared plugins ui-plugins gl ui render-utils ${PLATFORM_GL_BACKEND})
|
||||||
include_hifi_library_headers(gpu)
|
include_hifi_library_headers(gpu)
|
||||||
include_hifi_library_headers(model-networking)
|
include_hifi_library_headers(model-networking)
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
set(TARGET_NAME entities-renderer)
|
set(TARGET_NAME entities-renderer)
|
||||||
AUTOSCRIBE_SHADER_LIB(gpu graphics procedural render render-utils)
|
AUTOSCRIBE_SHADER_LIB(gpu graphics procedural render render-utils)
|
||||||
setup_hifi_library(Widgets Network Script)
|
setup_hifi_library(Network Script)
|
||||||
link_hifi_libraries(shared gpu procedural graphics model-networking script-engine render render-utils image ui pointers)
|
link_hifi_libraries(shared gpu procedural graphics model-networking script-engine render render-utils image ui pointers)
|
||||||
include_hifi_library_headers(networking)
|
include_hifi_library_headers(networking)
|
||||||
include_hifi_library_headers(gl)
|
include_hifi_library_headers(gl)
|
||||||
|
|
|
@ -165,7 +165,7 @@ public:
|
||||||
PolyVoxEntityRenderer(const EntityItemPointer& entity);
|
PolyVoxEntityRenderer(const EntityItemPointer& entity);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
virtual ItemKey getKey() override { return ItemKey::Builder::opaqueShape(); }
|
virtual ItemKey getKey() override { return ItemKey::Builder::opaqueShape().withTagBits(render::ItemKey::TAG_BITS_0 | render::ItemKey::TAG_BITS_1); }
|
||||||
virtual ShapeKey getShapeKey() override;
|
virtual ShapeKey getShapeKey() override;
|
||||||
virtual bool needsRenderUpdateFromTypedEntity(const TypedEntityPointer& entity) const override;
|
virtual bool needsRenderUpdateFromTypedEntity(const TypedEntityPointer& entity) const override;
|
||||||
virtual void doRenderUpdateSynchronousTyped(const ScenePointer& scene, Transaction& transaction, const TypedEntityPointer& entity) override;
|
virtual void doRenderUpdateSynchronousTyped(const ScenePointer& scene, Transaction& transaction, const TypedEntityPointer& entity) override;
|
||||||
|
|
|
@ -241,7 +241,7 @@ void ZoneEntityRenderer::doRenderUpdateSynchronousTyped(const ScenePointer& scen
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
updateKeyZoneItemFromEntity();
|
updateKeyZoneItemFromEntity(entity);
|
||||||
|
|
||||||
if (keyLightChanged) {
|
if (keyLightChanged) {
|
||||||
updateKeySunFromEntity(entity);
|
updateKeySunFromEntity(entity);
|
||||||
|
@ -329,7 +329,7 @@ void ZoneEntityRenderer::updateKeySunFromEntity(const TypedEntityPointer& entity
|
||||||
// Set the keylight
|
// Set the keylight
|
||||||
sunLight->setColor(ColorUtils::toVec3(_keyLightProperties.getColor()));
|
sunLight->setColor(ColorUtils::toVec3(_keyLightProperties.getColor()));
|
||||||
sunLight->setIntensity(_keyLightProperties.getIntensity());
|
sunLight->setIntensity(_keyLightProperties.getIntensity());
|
||||||
sunLight->setDirection(_keyLightProperties.getDirection());
|
sunLight->setDirection(entity->getTransform().getRotation() * _keyLightProperties.getDirection());
|
||||||
}
|
}
|
||||||
|
|
||||||
void ZoneEntityRenderer::updateAmbientLightFromEntity(const TypedEntityPointer& entity) {
|
void ZoneEntityRenderer::updateAmbientLightFromEntity(const TypedEntityPointer& entity) {
|
||||||
|
@ -349,6 +349,8 @@ void ZoneEntityRenderer::updateAmbientLightFromEntity(const TypedEntityPointer&
|
||||||
} else {
|
} else {
|
||||||
setAmbientURL(_ambientLightProperties.getAmbientURL());
|
setAmbientURL(_ambientLightProperties.getAmbientURL());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ambientLight->setTransform(entity->getTransform().getInverseMatrix());
|
||||||
}
|
}
|
||||||
|
|
||||||
void ZoneEntityRenderer::updateHazeFromEntity(const TypedEntityPointer& entity) {
|
void ZoneEntityRenderer::updateHazeFromEntity(const TypedEntityPointer& entity) {
|
||||||
|
@ -378,7 +380,7 @@ void ZoneEntityRenderer::updateHazeFromEntity(const TypedEntityPointer& entity)
|
||||||
haze->setHazeKeyLightRangeFactor(graphics::Haze::convertHazeRangeToHazeRangeFactor(_hazeProperties.getHazeKeyLightRange()));
|
haze->setHazeKeyLightRangeFactor(graphics::Haze::convertHazeRangeToHazeRangeFactor(_hazeProperties.getHazeKeyLightRange()));
|
||||||
haze->setHazeKeyLightAltitudeFactor(graphics::Haze::convertHazeAltitudeToHazeAltitudeFactor(_hazeProperties.getHazeKeyLightAltitude()));
|
haze->setHazeKeyLightAltitudeFactor(graphics::Haze::convertHazeAltitudeToHazeAltitudeFactor(_hazeProperties.getHazeKeyLightAltitude()));
|
||||||
|
|
||||||
haze->setZoneTransform(entity->getTransform().getMatrix());
|
haze->setTransform(entity->getTransform().getMatrix());
|
||||||
}
|
}
|
||||||
|
|
||||||
void ZoneEntityRenderer::updateKeyBackgroundFromEntity(const TypedEntityPointer& entity) {
|
void ZoneEntityRenderer::updateKeyBackgroundFromEntity(const TypedEntityPointer& entity) {
|
||||||
|
@ -390,7 +392,10 @@ void ZoneEntityRenderer::updateKeyBackgroundFromEntity(const TypedEntityPointer&
|
||||||
setSkyboxURL(_skyboxProperties.getURL());
|
setSkyboxURL(_skyboxProperties.getURL());
|
||||||
}
|
}
|
||||||
|
|
||||||
void ZoneEntityRenderer::updateKeyZoneItemFromEntity() {
|
void ZoneEntityRenderer::updateKeyZoneItemFromEntity(const TypedEntityPointer& entity) {
|
||||||
|
// Update rotation values
|
||||||
|
editSkybox()->setOrientation(entity->getTransform().getRotation());
|
||||||
|
|
||||||
/* TODO: Implement the sun model behavior / Keep this code here for reference, this is how we
|
/* TODO: Implement the sun model behavior / Keep this code here for reference, this is how we
|
||||||
{
|
{
|
||||||
// Set the stage
|
// Set the stage
|
||||||
|
|
|
@ -45,7 +45,7 @@ protected:
|
||||||
virtual void doRenderUpdateAsynchronousTyped(const TypedEntityPointer& entity) override;
|
virtual void doRenderUpdateAsynchronousTyped(const TypedEntityPointer& entity) override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void updateKeyZoneItemFromEntity();
|
void updateKeyZoneItemFromEntity(const TypedEntityPointer& entity);
|
||||||
void updateKeySunFromEntity(const TypedEntityPointer& entity);
|
void updateKeySunFromEntity(const TypedEntityPointer& entity);
|
||||||
void updateAmbientLightFromEntity(const TypedEntityPointer& entity);
|
void updateAmbientLightFromEntity(const TypedEntityPointer& entity);
|
||||||
void updateHazeFromEntity(const TypedEntityPointer& entity);
|
void updateHazeFromEntity(const TypedEntityPointer& entity);
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
set(TARGET_NAME gl)
|
set(TARGET_NAME gl)
|
||||||
setup_hifi_library(OpenGL Qml Quick)
|
setup_hifi_library(Gui Widgets Qml Quick)
|
||||||
link_hifi_libraries(shared)
|
link_hifi_libraries(shared)
|
||||||
target_opengl()
|
target_opengl()
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
set(TARGET_NAME gpu-gles)
|
set(TARGET_NAME gpu-gles)
|
||||||
setup_hifi_library(Concurrent)
|
setup_hifi_library(Gui Concurrent)
|
||||||
link_hifi_libraries(shared gl gpu)
|
link_hifi_libraries(shared gl gpu)
|
||||||
GroupSources("src")
|
GroupSources("src")
|
||||||
target_opengl()
|
target_opengl()
|
||||||
|
|
|
@ -182,11 +182,11 @@ void Haze::setHazeBackgroundBlend(const float hazeBackgroundBlend) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Haze::setZoneTransform(const glm::mat4& zoneTransform) {
|
void Haze::setTransform(const glm::mat4& transform) {
|
||||||
auto& params = _hazeParametersBuffer.get<Parameters>();
|
auto& params = _hazeParametersBuffer.get<Parameters>();
|
||||||
|
|
||||||
if (params.zoneTransform == zoneTransform) {
|
if (params.transform != transform) {
|
||||||
_hazeParametersBuffer.edit<Parameters>().zoneTransform = zoneTransform;
|
_hazeParametersBuffer.edit<Parameters>().transform = transform;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -92,7 +92,7 @@ namespace graphics {
|
||||||
|
|
||||||
void setHazeBackgroundBlend(const float hazeBackgroundBlend);
|
void setHazeBackgroundBlend(const float hazeBackgroundBlend);
|
||||||
|
|
||||||
void setZoneTransform(const glm::mat4& zoneTransform);
|
void setTransform(const glm::mat4& transform);
|
||||||
|
|
||||||
using UniformBufferView = gpu::BufferView;
|
using UniformBufferView = gpu::BufferView;
|
||||||
UniformBufferView getHazeParametersBuffer() const { return _hazeParametersBuffer; }
|
UniformBufferView getHazeParametersBuffer() const { return _hazeParametersBuffer; }
|
||||||
|
@ -113,7 +113,7 @@ namespace graphics {
|
||||||
// bit 2 - set to activate directional light attenuation mode
|
// bit 2 - set to activate directional light attenuation mode
|
||||||
// bit 3 - set to blend between blend-in and blend-out colours
|
// bit 3 - set to blend between blend-in and blend-out colours
|
||||||
|
|
||||||
glm::mat4 zoneTransform;
|
glm::mat4 transform;
|
||||||
|
|
||||||
// Amount of background (skybox) to display, overriding the haze effect for the background
|
// Amount of background (skybox) to display, overriding the haze effect for the background
|
||||||
float hazeBackgroundBlend{ INITIAL_HAZE_BACKGROUND_BLEND };
|
float hazeBackgroundBlend{ INITIAL_HAZE_BACKGROUND_BLEND };
|
||||||
|
|
|
@ -158,3 +158,9 @@ void Light::setAmbientMapNumMips(uint16_t numMips) {
|
||||||
_ambientSchemaBuffer.edit().mapNumMips = (float)numMips;
|
_ambientSchemaBuffer.edit().mapNumMips = (float)numMips;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Light::setTransform(const glm::mat4& transform) {
|
||||||
|
if (_ambientSchemaBuffer.edit().transform != transform) {
|
||||||
|
_ambientSchemaBuffer.edit().transform = transform;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
|
@ -149,6 +149,8 @@ public:
|
||||||
void setAmbientMapNumMips(uint16_t numMips);
|
void setAmbientMapNumMips(uint16_t numMips);
|
||||||
uint16_t getAmbientMapNumMips() const { return (uint16_t) _ambientSchemaBuffer->mapNumMips; }
|
uint16_t getAmbientMapNumMips() const { return (uint16_t) _ambientSchemaBuffer->mapNumMips; }
|
||||||
|
|
||||||
|
void setTransform(const glm::mat4& transform);
|
||||||
|
|
||||||
// Light Schema
|
// Light Schema
|
||||||
class LightSchema {
|
class LightSchema {
|
||||||
public:
|
public:
|
||||||
|
@ -162,7 +164,9 @@ public:
|
||||||
float mapNumMips { 0.0f };
|
float mapNumMips { 0.0f };
|
||||||
float spare1;
|
float spare1;
|
||||||
float spare2;
|
float spare2;
|
||||||
|
|
||||||
gpu::SphericalHarmonics ambientSphere;
|
gpu::SphericalHarmonics ambientSphere;
|
||||||
|
glm::mat4 transform;
|
||||||
};
|
};
|
||||||
|
|
||||||
using LightSchemaBuffer = gpu::StructBuffer<LightSchema>;
|
using LightSchemaBuffer = gpu::StructBuffer<LightSchema>;
|
||||||
|
|
|
@ -34,7 +34,9 @@ vec3 getLightIrradiance(Light l) { return lightIrradiance_getIrradiance(l.irradi
|
||||||
// Light Ambient
|
// Light Ambient
|
||||||
struct LightAmbient {
|
struct LightAmbient {
|
||||||
vec4 _ambient;
|
vec4 _ambient;
|
||||||
|
|
||||||
SphericalHarmonics _ambientSphere;
|
SphericalHarmonics _ambientSphere;
|
||||||
|
mat4 transform;
|
||||||
};
|
};
|
||||||
|
|
||||||
SphericalHarmonics getLightAmbientSphere(LightAmbient l) { return l._ambientSphere; }
|
SphericalHarmonics getLightAmbientSphere(LightAmbient l) { return l._ambientSphere; }
|
||||||
|
|
|
@ -37,6 +37,12 @@ void Skybox::setCubemap(const gpu::TexturePointer& cubemap) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Skybox::setOrientation(const glm::quat& orientation) {
|
||||||
|
// The zone rotations need to be negated
|
||||||
|
_orientation = orientation;
|
||||||
|
_orientation.w = -_orientation.w;
|
||||||
|
}
|
||||||
|
|
||||||
void Skybox::updateSchemaBuffer() const {
|
void Skybox::updateSchemaBuffer() const {
|
||||||
auto blend = 0.0f;
|
auto blend = 0.0f;
|
||||||
if (getCubemap() && getCubemap()->isDefined()) {
|
if (getCubemap() && getCubemap()->isDefined()) {
|
||||||
|
@ -115,6 +121,10 @@ void Skybox::render(gpu::Batch& batch, const ViewFrustum& viewFrustum, const Sky
|
||||||
|
|
||||||
Transform viewTransform;
|
Transform viewTransform;
|
||||||
viewFrustum.evalViewTransform(viewTransform);
|
viewFrustum.evalViewTransform(viewTransform);
|
||||||
|
|
||||||
|
// Orientate view transform to be relative to zone
|
||||||
|
viewTransform.setRotation(skybox.getOrientation() * viewTransform.getRotation());
|
||||||
|
|
||||||
batch.setProjectionTransform(projMat);
|
batch.setProjectionTransform(projMat);
|
||||||
batch.setViewTransform(viewTransform);
|
batch.setViewTransform(viewTransform);
|
||||||
batch.setModelTransform(Transform()); // only for Mac
|
batch.setModelTransform(Transform()); // only for Mac
|
||||||
|
|
|
@ -37,6 +37,9 @@ public:
|
||||||
void setCubemap(const gpu::TexturePointer& cubemap);
|
void setCubemap(const gpu::TexturePointer& cubemap);
|
||||||
const gpu::TexturePointer& getCubemap() const { return _cubemap; }
|
const gpu::TexturePointer& getCubemap() const { return _cubemap; }
|
||||||
|
|
||||||
|
void setOrientation(const glm::quat& orientation);
|
||||||
|
const glm::quat getOrientation() const { return _orientation; }
|
||||||
|
|
||||||
virtual bool empty() { return _empty; }
|
virtual bool empty() { return _empty; }
|
||||||
virtual void clear();
|
virtual void clear();
|
||||||
|
|
||||||
|
@ -61,6 +64,8 @@ protected:
|
||||||
|
|
||||||
mutable gpu::BufferView _schemaBuffer;
|
mutable gpu::BufferView _schemaBuffer;
|
||||||
gpu::TexturePointer _cubemap;
|
gpu::TexturePointer _cubemap;
|
||||||
|
glm::quat _orientation;
|
||||||
|
|
||||||
bool _empty{ true };
|
bool _empty{ true };
|
||||||
};
|
};
|
||||||
typedef std::shared_ptr<Skybox> SkyboxPointer;
|
typedef std::shared_ptr<Skybox> SkyboxPointer;
|
||||||
|
|
|
@ -9,7 +9,7 @@
|
||||||
// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html
|
// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html
|
||||||
//
|
//
|
||||||
|
|
||||||
#include <QApplication>
|
#include <QGuiApplication>
|
||||||
#include <QClipboard>
|
#include <QClipboard>
|
||||||
#include <QDebug>
|
#include <QDebug>
|
||||||
#include <QJsonDocument>
|
#include <QJsonDocument>
|
||||||
|
@ -764,7 +764,7 @@ void AddressManager::copyAddress() {
|
||||||
}
|
}
|
||||||
|
|
||||||
// assume that the address is being copied because the user wants a shareable address
|
// assume that the address is being copied because the user wants a shareable address
|
||||||
QApplication::clipboard()->setText(currentShareableAddress().toString());
|
QGuiApplication::clipboard()->setText(currentShareableAddress().toString());
|
||||||
}
|
}
|
||||||
|
|
||||||
void AddressManager::copyPath() {
|
void AddressManager::copyPath() {
|
||||||
|
@ -773,7 +773,7 @@ void AddressManager::copyPath() {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
QApplication::clipboard()->setText(currentPath());
|
QGuiApplication::clipboard()->setText(currentPath());
|
||||||
}
|
}
|
||||||
|
|
||||||
QString AddressManager::getDomainID() const {
|
QString AddressManager::getDomainID() const {
|
||||||
|
|
|
@ -38,7 +38,7 @@ PacketVersion versionForPacketType(PacketType packetType) {
|
||||||
case PacketType::AvatarData:
|
case PacketType::AvatarData:
|
||||||
case PacketType::BulkAvatarData:
|
case PacketType::BulkAvatarData:
|
||||||
case PacketType::KillAvatar:
|
case PacketType::KillAvatar:
|
||||||
return static_cast<PacketVersion>(AvatarMixerPacketVersion::AvatarJointDefaultPoseFlags);
|
return static_cast<PacketVersion>(AvatarMixerPacketVersion::FBXReaderNodeReparenting);
|
||||||
case PacketType::MessagesData:
|
case PacketType::MessagesData:
|
||||||
return static_cast<PacketVersion>(MessageDataVersion::TextOrBinaryData);
|
return static_cast<PacketVersion>(MessageDataVersion::TextOrBinaryData);
|
||||||
case PacketType::ICEServerHeartbeat:
|
case PacketType::ICEServerHeartbeat:
|
||||||
|
|
|
@ -128,15 +128,13 @@ bool ObjectActionTractor::prepareForTractorUpdate(btScalar deltaTimeStep) {
|
||||||
position /= linearTractorCount;
|
position /= linearTractorCount;
|
||||||
if (_positionalTargetSet) {
|
if (_positionalTargetSet) {
|
||||||
_lastPositionTarget = _positionalTarget;
|
_lastPositionTarget = _positionalTarget;
|
||||||
} else {
|
_positionalTarget = position;
|
||||||
_lastPositionTarget = position;
|
if (deltaTimeStep > EPSILON) {
|
||||||
}
|
// blend the new velocity with the old (low-pass filter)
|
||||||
_positionalTarget = position;
|
glm::vec3 newVelocity = (1.0f / deltaTimeStep) * (_positionalTarget - _lastPositionTarget);
|
||||||
if (deltaTimeStep > EPSILON) {
|
const float blend = 0.25f;
|
||||||
// blend the new velocity with the old (low-pass filter)
|
_linearVelocityTarget = (1.0f - blend) * _linearVelocityTarget + blend * newVelocity;
|
||||||
glm::vec3 newVelocity = (1.0f / deltaTimeStep) * (position - _lastPositionTarget);
|
}
|
||||||
const float blend = 0.25f;
|
|
||||||
_linearVelocityTarget = (1.0f - blend) * _linearVelocityTarget + blend * newVelocity;
|
|
||||||
}
|
}
|
||||||
_positionalTargetSet = true;
|
_positionalTargetSet = true;
|
||||||
_active = true;
|
_active = true;
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
set(TARGET_NAME plugins)
|
set(TARGET_NAME plugins)
|
||||||
setup_hifi_library(OpenGL)
|
setup_hifi_library(Gui)
|
||||||
link_hifi_libraries(shared networking)
|
link_hifi_libraries(shared networking)
|
||||||
include_hifi_library_headers(gpu)
|
include_hifi_library_headers(gpu)
|
||||||
|
|
|
@ -2,7 +2,7 @@ set(TARGET_NAME render-utils)
|
||||||
AUTOSCRIBE_SHADER_LIB(gpu graphics render)
|
AUTOSCRIBE_SHADER_LIB(gpu graphics render)
|
||||||
# pull in the resources.qrc file
|
# pull in the resources.qrc file
|
||||||
qt5_add_resources(QT_RESOURCES_FILE "${CMAKE_CURRENT_SOURCE_DIR}/res/fonts/fonts.qrc")
|
qt5_add_resources(QT_RESOURCES_FILE "${CMAKE_CURRENT_SOURCE_DIR}/res/fonts/fonts.qrc")
|
||||||
setup_hifi_library(Widgets OpenGL Network Qml Quick Script)
|
setup_hifi_library(Gui Network Qml Quick Script)
|
||||||
link_hifi_libraries(shared ktx gpu graphics model-networking render animation fbx image procedural)
|
link_hifi_libraries(shared ktx gpu graphics model-networking render animation fbx image procedural)
|
||||||
include_hifi_library_headers(networking)
|
include_hifi_library_headers(networking)
|
||||||
include_hifi_library_headers(octree)
|
include_hifi_library_headers(octree)
|
||||||
|
|
|
@ -26,7 +26,7 @@ struct HazeParams {
|
||||||
vec3 colorModulationFactor;
|
vec3 colorModulationFactor;
|
||||||
int hazeMode;
|
int hazeMode;
|
||||||
|
|
||||||
mat4 zoneTransform;
|
mat4 transform;
|
||||||
float backgroundBlend;
|
float backgroundBlend;
|
||||||
|
|
||||||
float hazeRangeFactor;
|
float hazeRangeFactor;
|
||||||
|
|
|
@ -5,9 +5,6 @@
|
||||||
//
|
//
|
||||||
// Distributed under the Apache License, Version 2.0.
|
// Distributed under the Apache License, Version 2.0.
|
||||||
// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html
|
// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html
|
||||||
//
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<@func declareSkyboxMap()@>
|
<@func declareSkyboxMap()@>
|
||||||
// declareSkyboxMap
|
// declareSkyboxMap
|
||||||
|
@ -15,7 +12,6 @@ uniform samplerCube skyboxMap;
|
||||||
|
|
||||||
vec4 evalSkyboxLight(vec3 direction, float lod) {
|
vec4 evalSkyboxLight(vec3 direction, float lod) {
|
||||||
// textureQueryLevels is not available until #430, so we require explicit lod
|
// textureQueryLevels is not available until #430, so we require explicit lod
|
||||||
// float mipmapLevel = lod * textureQueryLevels(skyboxMap);
|
|
||||||
float filterLod = textureQueryLod(skyboxMap, direction).x;
|
float filterLod = textureQueryLod(skyboxMap, direction).x;
|
||||||
// Keep texture filtering LOD as limit to prevent aliasing on specular reflection
|
// Keep texture filtering LOD as limit to prevent aliasing on specular reflection
|
||||||
lod = max(lod, filterLod);
|
lod = max(lod, filterLod);
|
||||||
|
@ -28,15 +24,13 @@ vec4 evalSkyboxLight(vec3 direction, float lod) {
|
||||||
vec3 fresnelSchlickAmbient(vec3 fresnelColor, float ndotd, float gloss) {
|
vec3 fresnelSchlickAmbient(vec3 fresnelColor, float ndotd, float gloss) {
|
||||||
float f = pow(1.0 - ndotd, 5.0);
|
float f = pow(1.0 - ndotd, 5.0);
|
||||||
return fresnelColor + (max(vec3(gloss), fresnelColor) - fresnelColor) * f;
|
return fresnelColor + (max(vec3(gloss), fresnelColor) - fresnelColor) * f;
|
||||||
// return fresnelColor + (vec3(1.0) - fresnelColor) * f;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
<@if supportAmbientMap@>
|
<@if supportAmbientMap@>
|
||||||
<$declareSkyboxMap()$>
|
<$declareSkyboxMap()$>
|
||||||
<@endif@>
|
<@endif@>
|
||||||
|
|
||||||
vec3 evalAmbientSpecularIrradiance(LightAmbient ambient, SurfaceData surface) {
|
vec3 evalAmbientSpecularIrradiance(LightAmbient ambient, SurfaceData surface, vec3 lightDir) {
|
||||||
vec3 lightDir = -reflect(surface.eyeDir, surface.normal);
|
|
||||||
vec3 specularLight;
|
vec3 specularLight;
|
||||||
<@if supportIfAmbientMapElseAmbientSphere@>
|
<@if supportIfAmbientMapElseAmbientSphere@>
|
||||||
if (getLightHasAmbientMap(ambient))
|
if (getLightHasAmbientMap(ambient))
|
||||||
|
@ -80,14 +74,21 @@ void evalLightingAmbient(out vec3 diffuse, out vec3 specular, LightAmbient ambie
|
||||||
<@endif@>
|
<@endif@>
|
||||||
) {
|
) {
|
||||||
|
|
||||||
// Fresnel
|
// Rotate surface normal and eye direction
|
||||||
|
vec3 ambientSpaceSurfaceNormal = (ambient.transform * vec4(surface.normal, 0.0)).xyz;
|
||||||
|
vec3 ambientSpaceSurfaceEyeDir = (ambient.transform * vec4(surface.eyeDir, 0.0)).xyz;
|
||||||
|
<@if supportScattering@>
|
||||||
|
vec3 ambientSpaceLowNormalCurvature = (ambient.transform * lowNormalCurvature).xyz;
|
||||||
|
<@endif@>
|
||||||
|
|
||||||
vec3 ambientFresnel = fresnelSchlickAmbient(fresnelF0, surface.ndotv, 1.0-surface.roughness);
|
vec3 ambientFresnel = fresnelSchlickAmbient(fresnelF0, surface.ndotv, 1.0-surface.roughness);
|
||||||
|
|
||||||
// Diffuse from ambient
|
diffuse = (1.0 - metallic) * (vec3(1.0) - ambientFresnel) *
|
||||||
diffuse = (1.0 - metallic) * (vec3(1.0) - ambientFresnel) * sphericalHarmonics_evalSphericalLight(getLightAmbientSphere(ambient), surface.normal).xyz;
|
sphericalHarmonics_evalSphericalLight(getLightAmbientSphere(ambient), ambientSpaceSurfaceNormal).xyz;
|
||||||
|
|
||||||
// Specular highlight from ambient
|
// Specular highlight from ambient
|
||||||
specular = evalAmbientSpecularIrradiance(ambient, surface) * ambientFresnel;
|
vec3 ambientSpaceLightDir = -reflect(ambientSpaceSurfaceEyeDir, ambientSpaceSurfaceNormal);
|
||||||
|
specular = evalAmbientSpecularIrradiance(ambient, surface, ambientSpaceLightDir) * ambientFresnel;
|
||||||
|
|
||||||
<@if supportScattering@>
|
<@if supportScattering@>
|
||||||
if (scattering * isScatteringEnabled() > 0.0) {
|
if (scattering * isScatteringEnabled() > 0.0) {
|
||||||
|
@ -98,7 +99,7 @@ void evalLightingAmbient(out vec3 diffuse, out vec3 specular, LightAmbient ambie
|
||||||
obscurance = min(obscurance, ambientOcclusion);
|
obscurance = min(obscurance, ambientOcclusion);
|
||||||
|
|
||||||
// Diffuse from ambient
|
// Diffuse from ambient
|
||||||
diffuse = sphericalHarmonics_evalSphericalLight(getLightAmbientSphere(ambient), lowNormalCurvature.xyz).xyz;
|
diffuse = sphericalHarmonics_evalSphericalLight(getLightAmbientSphere(ambient), ambientSpaceLowNormalCurvature).xyz;
|
||||||
|
|
||||||
// Scattering ambient specular is the same as non scattering for now
|
// Scattering ambient specular is the same as non scattering for now
|
||||||
// TODO: we should use the same specular answer as for direct lighting
|
// TODO: we should use the same specular answer as for direct lighting
|
||||||
|
|
|
@ -1,25 +1,18 @@
|
||||||
<@include gpu/Config.slh@>
|
<@include gpu/Config.slh@>
|
||||||
<$VERSION_HEADER$>
|
<$VERSION_HEADER$>
|
||||||
// Generated on <$_SCRIBE_DATE$>
|
// Generated on <$_SCRIBE_DATE$>
|
||||||
//
|
|
||||||
// model_translucent_fade.frag
|
// model_translucent_fade.frag
|
||||||
// fragment shader
|
|
||||||
//
|
|
||||||
// Created by Olivier Prat on 06/05/17.
|
// Created by Olivier Prat on 06/05/17.
|
||||||
// Copyright 2017 High Fidelity, Inc.
|
// Copyright 2017 High Fidelity, Inc.
|
||||||
//
|
|
||||||
// Distributed under the Apache License, Version 2.0.
|
// Distributed under the Apache License, Version 2.0.
|
||||||
// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html
|
// See the accompanying file LICENSE
|
||||||
//
|
|
||||||
|
|
||||||
<@include graphics/Material.slh@>
|
<@include graphics/Material.slh@>
|
||||||
|
|
||||||
<@include DeferredGlobalLight.slh@>
|
<@include DeferredGlobalLight.slh@>
|
||||||
|
|
||||||
<$declareEvalGlobalLightingAlphaBlendedWithHaze()$>
|
<$declareEvalGlobalLightingAlphaBlendedWithHaze()$>
|
||||||
|
|
||||||
<@include LightLocal.slh@>
|
<@include LightLocal.slh@>
|
||||||
|
|
||||||
<@include gpu/Transform.slh@>
|
<@include gpu/Transform.slh@>
|
||||||
<$declareStandardCameraTransform()$>
|
<$declareStandardCameraTransform()$>
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
set(TARGET_NAME script-engine)
|
set(TARGET_NAME script-engine)
|
||||||
|
# FIXME Move undo scripting interface to application and remove Widgets
|
||||||
setup_hifi_library(Gui Network Script ScriptTools WebSockets Widgets)
|
setup_hifi_library(Gui Network Script ScriptTools WebSockets Widgets)
|
||||||
|
|
||||||
target_zlib()
|
target_zlib()
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
set(TARGET_NAME shared)
|
set(TARGET_NAME shared)
|
||||||
|
|
||||||
# TODO: there isn't really a good reason to have Script linked here - let's get what is requiring it out (RegisteredMetaTypes.cpp)
|
# TODO: there isn't really a good reason to have Script linked here - let's get what is requiring it out (RegisteredMetaTypes.cpp)
|
||||||
setup_hifi_library(Gui Network Script Widgets)
|
setup_hifi_library(Gui Network Script)
|
||||||
|
|
||||||
if (WIN32)
|
if (WIN32)
|
||||||
target_link_libraries(${TARGET_NAME} Wbemuuid.lib)
|
target_link_libraries(${TARGET_NAME} Wbemuuid.lib)
|
||||||
|
|
|
@ -9,7 +9,6 @@
|
||||||
#include "EyeTracker.h"
|
#include "EyeTracker.h"
|
||||||
|
|
||||||
#include <QFuture>
|
#include <QFuture>
|
||||||
#include <QMessageBox>
|
|
||||||
#include <QtConcurrent/QtConcurrentRun>
|
#include <QtConcurrent/QtConcurrentRun>
|
||||||
|
|
||||||
#include <SharedUtil.h>
|
#include <SharedUtil.h>
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
set(TARGET_NAME ui-plugins)
|
set(TARGET_NAME ui-plugins)
|
||||||
setup_hifi_library(OpenGL)
|
setup_hifi_library(Gui)
|
||||||
link_hifi_libraries(shared plugins ui)
|
link_hifi_libraries(shared plugins ui)
|
||||||
include_hifi_library_headers(gpu)
|
include_hifi_library_headers(gpu)
|
|
@ -1,5 +1,5 @@
|
||||||
set(TARGET_NAME ui)
|
set(TARGET_NAME ui)
|
||||||
setup_hifi_library(OpenGL Multimedia Network Qml Quick Script WebChannel WebSockets XmlPatterns ${PLATFORM_QT_COMPONENTS})
|
setup_hifi_library(Widgets Multimedia Network Qml Quick Script WebChannel WebSockets XmlPatterns ${PLATFORM_QT_COMPONENTS})
|
||||||
link_hifi_libraries(shared networking gl audio audio-client plugins pointers)
|
link_hifi_libraries(shared networking gl audio audio-client plugins pointers)
|
||||||
include_hifi_library_headers(controllers)
|
include_hifi_library_headers(controllers)
|
||||||
|
|
||||||
|
|
|
@ -9,12 +9,11 @@
|
||||||
// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html
|
// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html
|
||||||
//
|
//
|
||||||
|
|
||||||
#include <qapplication.h>
|
#include "HiFiCodec.h"
|
||||||
|
|
||||||
#include <AudioCodec.h>
|
#include <AudioCodec.h>
|
||||||
#include <AudioConstants.h>
|
#include <AudioConstants.h>
|
||||||
|
|
||||||
#include "HiFiCodec.h"
|
|
||||||
|
|
||||||
const char* HiFiCodec::NAME { "hifiAC" };
|
const char* HiFiCodec::NAME { "hifiAC" };
|
||||||
|
|
||||||
|
|
|
@ -10,7 +10,7 @@ if (WIN32)
|
||||||
find_package(KINECT)
|
find_package(KINECT)
|
||||||
if (KINECT_FOUND)
|
if (KINECT_FOUND)
|
||||||
set(TARGET_NAME hifiKinect)
|
set(TARGET_NAME hifiKinect)
|
||||||
setup_hifi_plugin(Script Qml Widgets)
|
setup_hifi_plugin(Qml)
|
||||||
link_hifi_libraries(shared controllers ui plugins input-plugins display-plugins)
|
link_hifi_libraries(shared controllers ui plugins input-plugins display-plugins)
|
||||||
|
|
||||||
# need to setup appropriate externals...
|
# need to setup appropriate externals...
|
||||||
|
|
|
@ -9,7 +9,7 @@
|
||||||
find_package(LEAPMOTION)
|
find_package(LEAPMOTION)
|
||||||
if (LEAPMOTION_FOUND)
|
if (LEAPMOTION_FOUND)
|
||||||
set(TARGET_NAME hifiLeapMotion)
|
set(TARGET_NAME hifiLeapMotion)
|
||||||
setup_hifi_plugin(Script Qml Widgets)
|
setup_hifi_plugin(Qml)
|
||||||
link_hifi_libraries(shared controllers ui plugins input-plugins)
|
link_hifi_libraries(shared controllers ui plugins input-plugins)
|
||||||
target_leapmotion()
|
target_leapmotion()
|
||||||
endif()
|
endif()
|
||||||
|
|
|
@ -9,7 +9,7 @@
|
||||||
if (APPLE OR WIN32)
|
if (APPLE OR WIN32)
|
||||||
|
|
||||||
set(TARGET_NAME hifiNeuron)
|
set(TARGET_NAME hifiNeuron)
|
||||||
setup_hifi_plugin(Script Qml Widgets)
|
setup_hifi_plugin(Qml)
|
||||||
link_hifi_libraries(shared controllers ui plugins input-plugins)
|
link_hifi_libraries(shared controllers ui plugins input-plugins)
|
||||||
target_neuron()
|
target_neuron()
|
||||||
|
|
||||||
|
|
|
@ -7,6 +7,6 @@
|
||||||
#
|
#
|
||||||
|
|
||||||
set(TARGET_NAME hifiSdl2)
|
set(TARGET_NAME hifiSdl2)
|
||||||
setup_hifi_plugin(Script Qml Widgets)
|
setup_hifi_plugin(Qml)
|
||||||
link_hifi_libraries(shared controllers ui plugins input-plugins script-engine)
|
link_hifi_libraries(shared controllers ui plugins input-plugins script-engine)
|
||||||
target_sdl2()
|
target_sdl2()
|
||||||
|
|
|
@ -9,14 +9,15 @@
|
||||||
// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html
|
// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html
|
||||||
//
|
//
|
||||||
|
|
||||||
#include <qapplication.h>
|
#include "SDL2Manager.h"
|
||||||
|
|
||||||
|
#include <QtCore/QCoreApplication>
|
||||||
|
|
||||||
#include <controllers/UserInputMapper.h>
|
#include <controllers/UserInputMapper.h>
|
||||||
#include <PerfStat.h>
|
#include <PerfStat.h>
|
||||||
#include <Preferences.h>
|
#include <Preferences.h>
|
||||||
#include <SettingHandle.h>
|
#include <SettingHandle.h>
|
||||||
|
|
||||||
#include "SDL2Manager.h"
|
|
||||||
|
|
||||||
static_assert(
|
static_assert(
|
||||||
(int)controller::A == (int)SDL_CONTROLLER_BUTTON_A &&
|
(int)controller::A == (int)SDL_CONTROLLER_BUTTON_A &&
|
||||||
|
|
|
@ -12,7 +12,7 @@
|
||||||
# the msvcr100 runtime support, the plugin will not load.
|
# the msvcr100 runtime support, the plugin will not load.
|
||||||
if (NOT ANDROID)
|
if (NOT ANDROID)
|
||||||
set(TARGET_NAME hifiSixense)
|
set(TARGET_NAME hifiSixense)
|
||||||
setup_hifi_plugin(Script Qml Widgets)
|
setup_hifi_plugin(Qml)
|
||||||
link_hifi_libraries(shared controllers ui plugins ui-plugins input-plugins)
|
link_hifi_libraries(shared controllers ui plugins ui-plugins input-plugins)
|
||||||
target_sixense()
|
target_sixense()
|
||||||
if (WIN32)
|
if (WIN32)
|
||||||
|
|
|
@ -10,7 +10,7 @@ if(WIN32)
|
||||||
set(TARGET_NAME hifiSpacemouse)
|
set(TARGET_NAME hifiSpacemouse)
|
||||||
find_package(3DCONNEXIONCLIENT)
|
find_package(3DCONNEXIONCLIENT)
|
||||||
if (3DCONNEXIONCLIENT_FOUND)
|
if (3DCONNEXIONCLIENT_FOUND)
|
||||||
setup_hifi_plugin(Script Qml Widgets)
|
setup_hifi_plugin(Qml)
|
||||||
link_hifi_libraries(shared networking controllers ui plugins input-plugins)
|
link_hifi_libraries(shared networking controllers ui plugins input-plugins)
|
||||||
target_include_directories(${TARGET_NAME} PUBLIC ${3DCONNEXIONCLIENT_INCLUDE_DIRS})
|
target_include_directories(${TARGET_NAME} PUBLIC ${3DCONNEXIONCLIENT_INCLUDE_DIRS})
|
||||||
target_link_libraries(${TARGET_NAME} ${3DCONNEXIONCLIENT_LIBRARIES})
|
target_link_libraries(${TARGET_NAME} ${3DCONNEXIONCLIENT_LIBRARIES})
|
||||||
|
|
|
@ -10,7 +10,7 @@ if (WIN32 AND (NOT USE_GLES))
|
||||||
# we're using static GLEW, so define GLEW_STATIC
|
# we're using static GLEW, so define GLEW_STATIC
|
||||||
add_definitions(-DGLEW_STATIC)
|
add_definitions(-DGLEW_STATIC)
|
||||||
set(TARGET_NAME openvr)
|
set(TARGET_NAME openvr)
|
||||||
setup_hifi_plugin(OpenGL Script Qml Widgets Multimedia)
|
setup_hifi_plugin(Gui Qml Multimedia)
|
||||||
link_hifi_libraries(shared gl networking controllers ui
|
link_hifi_libraries(shared gl networking controllers ui
|
||||||
plugins display-plugins ui-plugins input-plugins script-engine
|
plugins display-plugins ui-plugins input-plugins script-engine
|
||||||
audio-client render-utils graphics gpu render model-networking fbx ktx image procedural ${PLATFORM_GL_BACKEND})
|
audio-client render-utils graphics gpu render model-networking fbx ktx image procedural ${PLATFORM_GL_BACKEND})
|
||||||
|
|
|
@ -9,7 +9,7 @@
|
||||||
// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html
|
// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html
|
||||||
//
|
//
|
||||||
|
|
||||||
#include <qapplication.h>
|
#include <QtCore/QCoreApplication>
|
||||||
|
|
||||||
#include <PerfStat.h>
|
#include <PerfStat.h>
|
||||||
|
|
||||||
|
|
|
@ -411,7 +411,7 @@ Script.include("/~/system/libraries/controllers.js");
|
||||||
var data = parseJSON(props.userData);
|
var data = parseJSON(props.userData);
|
||||||
if (data !== undefined && data.seat !== undefined) {
|
if (data !== undefined && data.seat !== undefined) {
|
||||||
var avatarUuid = Uuid.fromString(data.seat.user);
|
var avatarUuid = Uuid.fromString(data.seat.user);
|
||||||
if (Uuid.isNull(avatarUuid) || !AvatarList.getAvatar(avatarUuid)) {
|
if (Uuid.isNull(avatarUuid) || !AvatarList.getAvatar(avatarUuid).sessionUUID) {
|
||||||
return TARGET.SEAT;
|
return TARGET.SEAT;
|
||||||
} else {
|
} else {
|
||||||
return TARGET.INVALID;
|
return TARGET.INVALID;
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
set(TARGET_NAME gpu-test)
|
set(TARGET_NAME gpu-test)
|
||||||
AUTOSCRIBE_SHADER_LIB(gpu graphics render-utils)
|
AUTOSCRIBE_SHADER_LIB(gpu graphics render-utils)
|
||||||
# This is not a testcase -- just set it up as a regular hifi project
|
# This is not a testcase -- just set it up as a regular hifi project
|
||||||
setup_hifi_project(Quick Gui OpenGL Script Widgets)
|
setup_hifi_project(Quick Gui Script)
|
||||||
setup_memory_debugger()
|
setup_memory_debugger()
|
||||||
set_target_properties(${TARGET_NAME} PROPERTIES FOLDER "Tests/manual-tests/")
|
set_target_properties(${TARGET_NAME} PROPERTIES FOLDER "Tests/manual-tests/")
|
||||||
link_hifi_libraries(
|
link_hifi_libraries(
|
||||||
|
|
|
@ -8,7 +8,7 @@ endif()
|
||||||
setup_memory_debugger()
|
setup_memory_debugger()
|
||||||
|
|
||||||
# This is not a testcase -- just set it up as a regular hifi project
|
# This is not a testcase -- just set it up as a regular hifi project
|
||||||
setup_hifi_project(Quick Gui OpenGL)
|
setup_hifi_project(Quick Gui)
|
||||||
set_target_properties(${TARGET_NAME} PROPERTIES FOLDER "Tests/manual-tests/")
|
set_target_properties(${TARGET_NAME} PROPERTIES FOLDER "Tests/manual-tests/")
|
||||||
|
|
||||||
# link in the shared libraries
|
# link in the shared libraries
|
||||||
|
|
|
@ -8,7 +8,7 @@ endif()
|
||||||
setup_memory_debugger()
|
setup_memory_debugger()
|
||||||
|
|
||||||
# This is not a testcase -- just set it up as a regular hifi project
|
# This is not a testcase -- just set it up as a regular hifi project
|
||||||
setup_hifi_project(Quick Gui OpenGL)
|
setup_hifi_project(Quick Gui)
|
||||||
set_target_properties(${TARGET_NAME} PROPERTIES FOLDER "Tests/manual-tests/")
|
set_target_properties(${TARGET_NAME} PROPERTIES FOLDER "Tests/manual-tests/")
|
||||||
|
|
||||||
# link in the shared libraries
|
# link in the shared libraries
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
set(TARGET_NAME render-utils-test)
|
set(TARGET_NAME render-utils-test)
|
||||||
|
|
||||||
# This is not a testcase -- just set it up as a regular hifi project
|
# This is not a testcase -- just set it up as a regular hifi project
|
||||||
setup_hifi_project(Quick Gui OpenGL)
|
setup_hifi_project(Quick Gui)
|
||||||
set_target_properties(${TARGET_NAME} PROPERTIES FOLDER "Tests/manual-tests/")
|
set_target_properties(${TARGET_NAME} PROPERTIES FOLDER "Tests/manual-tests/")
|
||||||
|
|
||||||
setup_memory_debugger()
|
setup_memory_debugger()
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
set(TARGET_NAME shaders-test)
|
set(TARGET_NAME shaders-test)
|
||||||
|
|
||||||
# This is not a testcase -- just set it up as a regular hifi project
|
# This is not a testcase -- just set it up as a regular hifi project
|
||||||
setup_hifi_project(Quick Gui OpenGL)
|
setup_hifi_project(Quick Gui)
|
||||||
set_target_properties(${TARGET_NAME} PROPERTIES FOLDER "Tests/manual-tests/")
|
set_target_properties(${TARGET_NAME} PROPERTIES FOLDER "Tests/manual-tests/")
|
||||||
|
|
||||||
setup_memory_debugger()
|
setup_memory_debugger()
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
set(TARGET_NAME ac-client)
|
set(TARGET_NAME ac-client)
|
||||||
setup_hifi_project(Core Widgets)
|
setup_hifi_project(Core)
|
||||||
setup_memory_debugger()
|
setup_memory_debugger()
|
||||||
link_hifi_libraries(shared networking)
|
link_hifi_libraries(shared networking)
|
||||||
|
|
|
@ -13,7 +13,7 @@
|
||||||
#ifndef hifi_ACClientApp_h
|
#ifndef hifi_ACClientApp_h
|
||||||
#define hifi_ACClientApp_h
|
#define hifi_ACClientApp_h
|
||||||
|
|
||||||
#include <QApplication>
|
#include <QCoreApplication>
|
||||||
#include <udt/Constants.h>
|
#include <udt/Constants.h>
|
||||||
#include <udt/Socket.h>
|
#include <udt/Socket.h>
|
||||||
#include <ReceivedMessage.h>
|
#include <ReceivedMessage.h>
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
set(TARGET_NAME atp-client)
|
set(TARGET_NAME atp-client)
|
||||||
setup_hifi_project(Core Widgets)
|
setup_hifi_project(Core)
|
||||||
setup_memory_debugger()
|
setup_memory_debugger()
|
||||||
link_hifi_libraries(shared networking)
|
link_hifi_libraries(shared networking)
|
||||||
|
|
|
@ -13,7 +13,7 @@
|
||||||
#ifndef hifi_ATPClientApp_h
|
#ifndef hifi_ATPClientApp_h
|
||||||
#define hifi_ATPClientApp_h
|
#define hifi_ATPClientApp_h
|
||||||
|
|
||||||
#include <QApplication>
|
#include <QCoreApplication>
|
||||||
#include <udt/Constants.h>
|
#include <udt/Constants.h>
|
||||||
#include <udt/Socket.h>
|
#include <udt/Socket.h>
|
||||||
#include <ReceivedMessage.h>
|
#include <ReceivedMessage.h>
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
set(TARGET_NAME ice-client)
|
set(TARGET_NAME ice-client)
|
||||||
setup_hifi_project(Core Widgets)
|
setup_hifi_project(Core)
|
||||||
setup_memory_debugger()
|
setup_memory_debugger()
|
||||||
link_hifi_libraries(shared networking)
|
link_hifi_libraries(shared networking)
|
||||||
|
|
|
@ -13,7 +13,7 @@
|
||||||
#ifndef hifi_ICEClientApp_h
|
#ifndef hifi_ICEClientApp_h
|
||||||
#define hifi_ICEClientApp_h
|
#define hifi_ICEClientApp_h
|
||||||
|
|
||||||
#include <QApplication>
|
#include <QCoreApplication>
|
||||||
#include <udt/Constants.h>
|
#include <udt/Constants.h>
|
||||||
#include <udt/Socket.h>
|
#include <udt/Socket.h>
|
||||||
#include <ReceivedMessage.h>
|
#include <ReceivedMessage.h>
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
set(TARGET_NAME skeleton-dump)
|
set(TARGET_NAME skeleton-dump)
|
||||||
setup_hifi_project(Core Widgets)
|
setup_hifi_project(Core)
|
||||||
setup_memory_debugger()
|
setup_memory_debugger()
|
||||||
link_hifi_libraries(shared fbx graphics gpu gl animation)
|
link_hifi_libraries(shared fbx graphics gpu gl animation)
|
||||||
|
|
||||||
|
|
|
@ -12,7 +12,7 @@
|
||||||
#ifndef hifi_SkeletonDumpApp_h
|
#ifndef hifi_SkeletonDumpApp_h
|
||||||
#define hifi_SkeletonDumpApp_h
|
#define hifi_SkeletonDumpApp_h
|
||||||
|
|
||||||
#include <QApplication>
|
#include <QCoreApplication>
|
||||||
|
|
||||||
class SkeletonDumpApp : public QCoreApplication {
|
class SkeletonDumpApp : public QCoreApplication {
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
set(TARGET_NAME vhacd-util)
|
set(TARGET_NAME vhacd-util)
|
||||||
setup_hifi_project(Core Widgets)
|
setup_hifi_project(Core)
|
||||||
link_hifi_libraries(shared fbx graphics gpu gl)
|
link_hifi_libraries(shared fbx graphics gpu gl)
|
||||||
|
|
||||||
add_dependency_external_projects(vhacd)
|
add_dependency_external_projects(vhacd)
|
||||||
|
|
|
@ -13,7 +13,7 @@
|
||||||
#ifndef hifi_VHACDUtilApp_h
|
#ifndef hifi_VHACDUtilApp_h
|
||||||
#define hifi_VHACDUtilApp_h
|
#define hifi_VHACDUtilApp_h
|
||||||
|
|
||||||
#include <QApplication>
|
#include <QCoreApplication>
|
||||||
|
|
||||||
#include <FBXReader.h>
|
#include <FBXReader.h>
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue