// // materialInspector.qml // // Created by Sabrina Shanman on 2019-01-16 // Copyright 2019 High Fidelity, Inc. // // Distributed under the Apache License, Version 2.0. // See the accompanying file LICENSE or https://www.apache.org/licenses/LICENSE-2.0.html // import QtQuick 2.7 import QtQuick.Controls 2.3 as Original import QtQuick.Layouts 1.3 import stylesUit 1.0 import controlsUit 1.0 as HifiControls import "../lib/prop" as Prop Rectangle { HifiConstants { id: hifi;} color: Qt.rgba(hifi.colors.baseGray.r, hifi.colors.baseGray.g, hifi.colors.baseGray.b, 0.8); id: root; property var theMaterial: {} property var theMaterialAttributes: {} property var hasMaterial: false property var isReadOnly: true function fromScript(message) { switch (message.method) { case "setObjectInfo": entityIDInfo.text = "Type: " + message.params.type + "\nID: " + message.params.id + "\nMesh Part: " + message.params.meshPart; break; case "setMaterialJSON": materialJSONText.text = message.params.materialJSONText; theMaterial = JSON.parse(message.params.materialJSONText) theMaterialAttributes = theMaterial.materials hasMaterial = (theMaterial !== undefined) break; } } Column { anchors.left: parent.left anchors.right: parent.right Rectangle { id: entityIDContainer height: 52 width: root.width color: Qt.rgba(root.color.r * 0.7, root.color.g * 0.7, root.color.b * 0.7, 0.8); TextEdit { id: entityIDInfo text: "Type: Unknown\nID: None\nMesh Part: Unknown" font.pointSize: 9 color: "#FFFFFF" readOnly: true selectByMouse: true } } Prop.PropString { visible: hasMaterial && ("name" in theMaterialAttributes) label: "name" object: theMaterialAttributes property: "name" readOnly: isReadOnly } Prop.PropString { visible: hasMaterial && ("model" in theMaterialAttributes) label: "model" object: theMaterialAttributes property: "model" readOnly: isReadOnly } Prop.PropColor { visible: hasMaterial && ("albedo" in theMaterialAttributes) label: "albedo" object: theMaterialAttributes property: "albedo" readOnly: isReadOnly } Prop.PropString { visible: hasMaterial && ("albedoMap" in theMaterialAttributes) label: "albedoMap" object: theMaterialAttributes property: "albedoMap" readOnly: isReadOnly } Prop.PropScalar { visible: hasMaterial && ("opacity" in theMaterialAttributes) label: "opacity" object: theMaterialAttributes property: "opacity" readOnly: isReadOnly } Prop.PropString { visible: hasMaterial && ("opacityMap" in theMaterialAttributes) label: "opacityMap" object: theMaterialAttributes property: "opacityMap" readOnly: isReadOnly } Prop.PropString { visible: hasMaterial && ("opacityMapMode" in theMaterialAttributes) label: "opacityMapMode" object: theMaterialAttributes property: "opacityMapMode" readOnly: isReadOnly } /*Prop.PropEnum { visible: hasMaterial && ("opacityMapMode" in theMaterialAttributes) label: "opacityMapMode" object: theMaterialAttributes property: "opacityMapMode" readOnly: isReadOnly enums: ["None", "Mask", "Blend"] } */ Prop.PropScalar { visible: hasMaterial && ("opacityCutoff" in theMaterialAttributes) label: "opacity Cutoff" object: theMaterialAttributes property: "opacityCutoff" readOnly: isReadOnly } Prop.PropString { visible: hasMaterial && ("occlusionMap" in theMaterialAttributes) label: "occlusionMap" object: theMaterialAttributes property: "occlusionMap" readOnly: isReadOnly } Prop.PropString { visible: hasMaterial && ("normalMap" in theMaterialAttributes) label: "normalMap" object: theMaterialAttributes property: "normalMap" readOnly: isReadOnly } Prop.PropString { visible: hasMaterial && ("bumpMap" in theMaterialAttributes) label: "normalMap from bumpMap" object: theMaterialAttributes property: "bumpMap" readOnly: isReadOnly } Prop.PropScalar { visible: hasMaterial && ("roughness" in theMaterialAttributes) label: "roughness" object: theMaterialAttributes property: "roughness" readOnly: isReadOnly } Prop.PropScalar { visible: hasMaterial && ("metallic" in theMaterialAttributes) label: "metallic" object: theMaterialAttributes property: "metallic" readOnly: isReadOnly } Prop.PropString { visible: hasMaterial && ("roughnessMap" in theMaterialAttributes) label: "roughnessMap" object: theMaterialAttributes property: "roughnessMap" readOnly: isReadOnly } Prop.PropString { visible: hasMaterial && ("glossMap" in theMaterialAttributes) label: "roughnessMap from glossMap" object: theMaterialAttributes property: "glossMap" readOnly: isReadOnly } Prop.PropString { visible: hasMaterial && ("metallicMap" in theMaterialAttributes) label: "metallicMap" object: theMaterialAttributes property: "metallicMap" readOnly: isReadOnly } Prop.PropString { visible: hasMaterial && ("specularMap" in theMaterialAttributes) label: "metallicMap from specularMap" object: theMaterialAttributes property: "specularMap" readOnly: isReadOnly } Prop.PropScalar { visible: hasMaterial && ("scattering" in theMaterialAttributes) label: "scattering" object: theMaterialAttributes property: "scattering" readOnly: isReadOnly } Prop.PropString { visible: hasMaterial && ("scatteringMap" in theMaterialAttributes) label: "scatteringMap" object: theMaterialAttributes property: "scatteringMap" readOnly: isReadOnly } Prop.PropColor { visible: hasMaterial && ("emissive" in theMaterialAttributes) label: "emissive" object: theMaterialAttributes property: "emissive" readOnly: isReadOnly } Prop.PropString { visible: hasMaterial && ("emissiveMap" in theMaterialAttributes) label: "emissiveMap" object: theMaterialAttributes property: "emissiveMap" readOnly: isReadOnly } Original.ScrollView { // anchors.top: entityIDContainer.bottom height: root.height - entityIDContainer.height width: root.width clip: true Original.ScrollBar.horizontal.policy: Original.ScrollBar.AlwaysOff TextEdit { id: materialJSONText text: "Click an object to get material JSON" width: root.width font.pointSize: 10 color: "#FFFFFF" readOnly: true selectByMouse: true wrapMode: Text.WordWrap } } } }