2022-08-19 15:59:36 +02:00
|
|
|
// Copyright (C) 2019 The Qt Company Ltd.
|
|
|
|
|
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0 WITH Qt-GPL-exception-1.0
|
2019-10-25 14:44:55 +03:00
|
|
|
|
|
|
|
|
import QtQuick 2.0
|
2020-03-09 16:08:13 +02:00
|
|
|
import QtQuick3D 1.15
|
2019-10-25 14:44:55 +03:00
|
|
|
|
|
|
|
|
IconGizmo {
|
|
|
|
|
id: cameraGizmo
|
|
|
|
|
|
2020-03-09 16:08:13 +02:00
|
|
|
property Model frustumModel: null
|
2022-01-21 17:15:01 +02:00
|
|
|
property bool globalShowFrustum: false
|
2020-02-25 14:37:45 +02:00
|
|
|
|
2019-11-13 13:42:43 +02:00
|
|
|
iconSource: "qrc:///qtquickplugin/mockfiles/images/editor_camera.png"
|
2019-11-07 10:46:14 +02:00
|
|
|
|
2020-02-25 14:37:45 +02:00
|
|
|
function connectFrustum(frustum)
|
|
|
|
|
{
|
|
|
|
|
frustumModel = frustum;
|
|
|
|
|
|
|
|
|
|
frustum.selected = selected;
|
|
|
|
|
frustum.selected = Qt.binding(function() {return selected;});
|
2020-02-04 15:49:43 +02:00
|
|
|
|
2020-02-25 14:37:45 +02:00
|
|
|
frustum.scene = scene;
|
|
|
|
|
frustum.scene = Qt.binding(function() {return scene;});
|
|
|
|
|
|
|
|
|
|
frustum.targetNode = targetNode;
|
|
|
|
|
frustum.targetNode = Qt.binding(function() {return targetNode;});
|
|
|
|
|
|
2022-01-21 17:15:01 +02:00
|
|
|
frustum.visible = (canBeVisible && globalShowFrustum)
|
|
|
|
|
|| (targetNode && selected && activeScene === scene);
|
|
|
|
|
frustum.visible = Qt.binding(function() {
|
|
|
|
|
return (canBeVisible && globalShowFrustum)
|
|
|
|
|
|| (targetNode && selected && activeScene === scene);
|
|
|
|
|
});
|
2019-11-18 15:02:07 +02:00
|
|
|
}
|
|
|
|
|
|
2020-02-25 14:37:45 +02:00
|
|
|
onActiveSceneChanged: {
|
|
|
|
|
if (frustumModel && activeScene == scene)
|
|
|
|
|
frustumModel.updateGeometry();
|
2019-11-07 10:46:14 +02:00
|
|
|
}
|
2019-10-25 14:44:55 +03:00
|
|
|
}
|