mirror of
https://github.com/lubosz/overte.git
synced 2025-04-08 04:42:20 +02:00
Initial Create App UI for voxels
This commit is contained in:
parent
44702b3e26
commit
716e310c0f
7 changed files with 627 additions and 1 deletions
|
@ -4,6 +4,7 @@
|
|||
// Persist toolbar by HRS 6/11/15.
|
||||
// Copyright 2014 High Fidelity, Inc.
|
||||
// Copyright 2020 Vircadia contributors.
|
||||
// Copyright 2022 Overte e.V.
|
||||
//
|
||||
// This script allows you to edit entities with a new UI/UX for mouse and trackpad based editing
|
||||
//
|
||||
|
@ -971,6 +972,8 @@ var toolBar = (function () {
|
|||
|
||||
addButton("newMaterialButton", createNewEntityDialogButtonCallback("Material"));
|
||||
|
||||
addButton("newPolyVoxButton", createNewEntityDialogButtonCallback("PolyVox"));
|
||||
|
||||
var deactivateCreateIfDesktopWindowsHidden = function() {
|
||||
if (!shouldUseEditTabletApp() && !entityListTool.isVisible() && !createToolsWindow.isVisible()) {
|
||||
that.setActive(false);
|
||||
|
|
|
@ -1326,6 +1326,48 @@ const GROUPS = [
|
|||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
id: "polyvox",
|
||||
label: "POLYVOX",
|
||||
properties: [
|
||||
{
|
||||
label: "Volume Size",
|
||||
type: "vec3",
|
||||
vec3Type: "xyz",
|
||||
step: 1.0,
|
||||
decimals: 0,
|
||||
subLabels: [ "x", "y", "z" ],
|
||||
unit: "",
|
||||
propertyID: "voxelVolumeSize",
|
||||
},
|
||||
{
|
||||
label: "Surface Style",
|
||||
type: "dropdown",
|
||||
options: { 0: "Marching cubes", 1: "Cubic",
|
||||
2: "Edged cubic", 3: "Edged marching cubes" },
|
||||
propertyID: "voxelSurfaceStyle",
|
||||
propertyName: "voxelSurfaceStyle",
|
||||
},
|
||||
{
|
||||
label: "X Texture URL",
|
||||
type: "string",
|
||||
propertyID: "xTextureURL",
|
||||
propertyName: "xTextureURL",
|
||||
},
|
||||
{
|
||||
label: "Y Texture URL",
|
||||
type: "string",
|
||||
propertyID: "yTextureURL",
|
||||
propertyName: "yTextureURL",
|
||||
},
|
||||
{
|
||||
label: "Z Texture URL",
|
||||
type: "string",
|
||||
propertyID: "zTextureURL",
|
||||
propertyName: "zTextureURL",
|
||||
},
|
||||
]
|
||||
},
|
||||
{
|
||||
id: "spatial",
|
||||
label: "SPATIAL",
|
||||
|
@ -1705,7 +1747,7 @@ const GROUPS_PER_TYPE = {
|
|||
ParticleEffect: [ 'base', 'particles', 'particles_emit', 'particles_size', 'particles_color',
|
||||
'particles_behavior', 'particles_constraints', 'spatial', 'behavior', 'scripts', 'physics' ],
|
||||
PolyLine: [ 'base', 'spatial', 'behavior', 'scripts', 'collision', 'physics' ],
|
||||
PolyVox: [ 'base', 'spatial', 'behavior', 'scripts', 'collision', 'physics' ],
|
||||
PolyVox: [ 'base', 'polyvox', 'spatial', 'behavior', 'scripts', 'collision', 'physics' ],
|
||||
Grid: [ 'base', 'grid', 'spatial', 'behavior', 'scripts', 'physics' ],
|
||||
Multiple: [ 'base', 'spatial', 'behavior', 'scripts', 'collision', 'physics' ],
|
||||
};
|
||||
|
|
|
@ -178,6 +178,18 @@ TabBar {
|
|||
editTabView.currentIndex = 2
|
||||
}
|
||||
}
|
||||
|
||||
NewEntityButton {
|
||||
icon: "icons/voxels.svg"
|
||||
text: "VOXELS"
|
||||
onClicked: {
|
||||
editRoot.sendToScript({
|
||||
method: "newEntityButtonClicked",
|
||||
params: { buttonName: "newPolyVoxButton" }
|
||||
});
|
||||
editTabView.currentIndex = 2
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
HifiControls.Button {
|
||||
|
|
|
@ -184,6 +184,18 @@ TabBar {
|
|||
editTabView.currentIndex = tabIndex.properties
|
||||
}
|
||||
}
|
||||
|
||||
NewEntityButton {
|
||||
icon: "icons/voxels.svg"
|
||||
text: "VOXELS"
|
||||
onClicked: {
|
||||
editRoot.sendToScript({
|
||||
method: "newEntityButtonClicked",
|
||||
params: { buttonName: "newPolyVoxButton" }
|
||||
});
|
||||
editTabView.currentIndex = tabIndex.properties
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
HifiControls.Button {
|
||||
|
|
487
scripts/system/create/qml/NewPolyVoxDialog.qml
Normal file
487
scripts/system/create/qml/NewPolyVoxDialog.qml
Normal file
|
@ -0,0 +1,487 @@
|
|||
//
|
||||
// NewPolyVoxDialog.qml
|
||||
// based on NewModelDialog.qml
|
||||
// qml/hifi
|
||||
//
|
||||
// Copyright 2017 High Fidelity, Inc.
|
||||
// Copyright 2020 Vircadia contributors
|
||||
// Copyright 2022 Overte e.V.
|
||||
//
|
||||
// Distributed under the Apache License, Version 2.0.
|
||||
// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html
|
||||
//
|
||||
|
||||
import QtQuick 2.5
|
||||
import QtQuick.Dialogs 1.2 as OriginalDialogs
|
||||
|
||||
import stylesUit 1.0
|
||||
import controlsUit 1.0
|
||||
import hifi.dialogs 1.0
|
||||
|
||||
Rectangle {
|
||||
id: newPolyVoxDialog
|
||||
// width: parent.width
|
||||
// height: parent.height
|
||||
HifiConstants { id: hifi }
|
||||
color: hifi.colors.baseGray;
|
||||
signal sendToScript(var message);
|
||||
property bool keyboardEnabled: false
|
||||
property bool keyboardRaised: false
|
||||
property bool punctuationMode: false
|
||||
property bool keyboardRasied: false
|
||||
|
||||
function errorMessageBox(message) {
|
||||
try {
|
||||
return desktop.messageBox({
|
||||
icon: hifi.icons.warning,
|
||||
defaultButton: OriginalDialogs.StandardButton.Ok,
|
||||
title: "Error",
|
||||
text: message
|
||||
});
|
||||
} catch(e) {
|
||||
Window.alert(message);
|
||||
}
|
||||
}
|
||||
|
||||
Item {
|
||||
id: column1
|
||||
anchors.rightMargin: 10
|
||||
anchors.leftMargin: 10
|
||||
anchors.bottomMargin: 10
|
||||
anchors.topMargin: 0
|
||||
anchors.top: parent.top
|
||||
anchors.left: parent.left
|
||||
anchors.right: parent.right
|
||||
anchors.bottom: keyboard.top
|
||||
|
||||
Text {
|
||||
id: text1
|
||||
text: qsTr("X Texture URL")
|
||||
color: "#ffffff"
|
||||
font.pixelSize: 12
|
||||
}
|
||||
|
||||
TextInput {
|
||||
id: xTextureURL
|
||||
height: 20
|
||||
text: qsTr("")
|
||||
color: "white"
|
||||
anchors.top: text1.bottom
|
||||
anchors.topMargin: 5
|
||||
anchors.left: parent.left
|
||||
anchors.leftMargin: 0
|
||||
anchors.right: parent.right
|
||||
anchors.rightMargin: 0
|
||||
font.pixelSize: 12
|
||||
|
||||
onAccepted: {
|
||||
newPolyVoxDialog.keyboardEnabled = false;
|
||||
}
|
||||
|
||||
onTextChanged : {
|
||||
if (xTextureURL.text.length === 0){
|
||||
button1.enabled = false;
|
||||
} else {
|
||||
button1.enabled = true;
|
||||
}
|
||||
}
|
||||
|
||||
MouseArea {
|
||||
anchors.fill: parent
|
||||
onClicked: {
|
||||
newPolyVoxDialog.keyboardEnabled = HMD.active
|
||||
parent.focus = true;
|
||||
parent.forceActiveFocus();
|
||||
xTextureURL.cursorPosition = xTextureURL.positionAt(mouseX, mouseY, TextInput.CursorBetweenCharaters);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Rectangle {
|
||||
id: textInputBox1
|
||||
color: "white"
|
||||
anchors.fill: xTextureURL
|
||||
opacity: 0.1
|
||||
}
|
||||
|
||||
Text {
|
||||
id: text2
|
||||
text: qsTr("Y Texture URL")
|
||||
color: "#ffffff"
|
||||
font.pixelSize: 12
|
||||
anchors.top: textInputBox1.bottom
|
||||
anchors.topMargin: 5
|
||||
}
|
||||
|
||||
TextInput {
|
||||
id: yTextureURL
|
||||
height: 20
|
||||
text: qsTr("")
|
||||
color: "white"
|
||||
anchors.top: text2.bottom
|
||||
anchors.topMargin: 5
|
||||
anchors.left: parent.left
|
||||
anchors.leftMargin: 0
|
||||
anchors.right: parent.right
|
||||
anchors.rightMargin: 0
|
||||
font.pixelSize: 12
|
||||
|
||||
onAccepted: {
|
||||
newPolyVoxDialog.keyboardEnabled = false;
|
||||
}
|
||||
|
||||
onTextChanged : {
|
||||
if (yTextureURL.text.length === 0){
|
||||
button1.enabled = false;
|
||||
} else {
|
||||
button1.enabled = true;
|
||||
}
|
||||
}
|
||||
|
||||
MouseArea {
|
||||
anchors.fill: parent
|
||||
onClicked: {
|
||||
newPolyVoxDialog.keyboardEnabled = HMD.active
|
||||
parent.focus = true;
|
||||
parent.forceActiveFocus();
|
||||
yTextureURL.cursorPosition = yTextureURL.positionAt(mouseX, mouseY, TextInput.CursorBetweenCharaters);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Rectangle {
|
||||
id: textInputBox2
|
||||
color: "white"
|
||||
anchors.fill: yTextureURL
|
||||
opacity: 0.1
|
||||
}
|
||||
|
||||
Text {
|
||||
id: text3
|
||||
text: qsTr("Z Texture URL")
|
||||
color: "#ffffff"
|
||||
font.pixelSize: 12
|
||||
anchors.top: textInputBox2.bottom
|
||||
anchors.topMargin: 5
|
||||
}
|
||||
|
||||
TextInput {
|
||||
id: zTextureURL
|
||||
height: 20
|
||||
text: qsTr("")
|
||||
color: "white"
|
||||
anchors.top: text3.bottom
|
||||
anchors.topMargin: 5
|
||||
anchors.left: parent.left
|
||||
anchors.leftMargin: 0
|
||||
anchors.right: parent.right
|
||||
anchors.rightMargin: 0
|
||||
font.pixelSize: 12
|
||||
|
||||
onAccepted: {
|
||||
newPolyVoxDialog.keyboardEnabled = false;
|
||||
}
|
||||
|
||||
onTextChanged : {
|
||||
if (zTextureURL.text.length === 0){
|
||||
button1.enabled = false;
|
||||
} else {
|
||||
button1.enabled = true;
|
||||
}
|
||||
}
|
||||
|
||||
MouseArea {
|
||||
anchors.fill: parent
|
||||
onClicked: {
|
||||
newPolyVoxDialog.keyboardEnabled = HMD.active
|
||||
parent.focus = true;
|
||||
parent.forceActiveFocus();
|
||||
zTextureURL.cursorPosition = zTextureURL.positionAt(mouseX, mouseY, TextInput.CursorBetweenCharaters);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Rectangle {
|
||||
id: textInputBox3
|
||||
color: "white"
|
||||
anchors.fill: zTextureURL
|
||||
opacity: 0.1
|
||||
}
|
||||
|
||||
Text {
|
||||
id: textVolumeSize
|
||||
text: qsTr("Volume Size (number of voxels along the edge)")
|
||||
color: "#ffffff"
|
||||
font.pixelSize: 12
|
||||
anchors.top: zTextureURL.bottom
|
||||
anchors.topMargin: 5
|
||||
}
|
||||
|
||||
Row {
|
||||
id: rowVolumeSize
|
||||
height: 50
|
||||
spacing: 30
|
||||
anchors.top: textVolumeSize.bottom
|
||||
anchors.topMargin: 5
|
||||
anchors.left: parent.left
|
||||
anchors.leftMargin: 0
|
||||
anchors.right: parent.right
|
||||
anchors.rightMargin: 0
|
||||
|
||||
Text {
|
||||
id: textVolumeSizeX
|
||||
text: qsTr("X")
|
||||
color: "#ffffff"
|
||||
font.pixelSize: 12
|
||||
}
|
||||
|
||||
TextInput {
|
||||
id: volumeSizeX
|
||||
height: 20
|
||||
width: 50
|
||||
anchors.left: textVolumeSizeX.right
|
||||
anchors.leftMargin: 3
|
||||
text: qsTr("")
|
||||
color: "white"
|
||||
font.pixelSize: 12
|
||||
|
||||
onAccepted: {
|
||||
newPolyVoxDialog.keyboardEnabled = false;
|
||||
}
|
||||
|
||||
MouseArea {
|
||||
anchors.fill: parent
|
||||
onClicked: {
|
||||
newPolyVoxDialog.keyboardEnabled = HMD.active
|
||||
parent.focus = true;
|
||||
parent.forceActiveFocus();
|
||||
volumeSizeX.cursorPosition = volumeSizeX.positionAt(mouseX, mouseY, TextInput.CursorBetweenCharaters);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Rectangle {
|
||||
id: textInputBoxVolumeSizeX
|
||||
color: "white"
|
||||
anchors.fill: volumeSizeX
|
||||
opacity: 0.1
|
||||
}
|
||||
|
||||
Text {
|
||||
id: textVolumeSizeY
|
||||
text: qsTr("Y")
|
||||
color: "#ffffff"
|
||||
font.pixelSize: 12
|
||||
anchors.left: volumeSizeX.right
|
||||
anchors.leftMargin: 5
|
||||
}
|
||||
|
||||
TextInput {
|
||||
id: volumeSizeY
|
||||
height: 20
|
||||
width: 50
|
||||
anchors.left: textVolumeSizeY.right
|
||||
anchors.leftMargin: 3
|
||||
text: qsTr("")
|
||||
color: "white"
|
||||
font.pixelSize: 12
|
||||
|
||||
onAccepted: {
|
||||
newPolyVoxDialog.keyboardEnabled = false;
|
||||
}
|
||||
|
||||
MouseArea {
|
||||
anchors.fill: parent
|
||||
onClicked: {
|
||||
newPolyVoxDialog.keyboardEnabled = HMD.active
|
||||
parent.focus = true;
|
||||
parent.forceActiveFocus();
|
||||
volumeSizeY.cursorPosition = volumeSizeY.positionAt(mouseX, mouseY, TextInput.CursorBetweenCharaters);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Rectangle {
|
||||
id: textInputBoxVolumeSizeY
|
||||
color: "white"
|
||||
anchors.fill: volumeSizeY
|
||||
opacity: 0.1
|
||||
}
|
||||
Text {
|
||||
id: textVolumeSizeZ
|
||||
text: qsTr("X")
|
||||
color: "#ffffff"
|
||||
font.pixelSize: 12
|
||||
anchors.left: volumeSizeY.right
|
||||
anchors.leftMargin: 5
|
||||
}
|
||||
|
||||
TextInput {
|
||||
id: volumeSizeZ
|
||||
height: 20
|
||||
width: 50
|
||||
anchors.left: textVolumeSizeZ.right
|
||||
anchors.leftMargin: 3
|
||||
text: qsTr("")
|
||||
color: "white"
|
||||
font.pixelSize: 12
|
||||
|
||||
onAccepted: {
|
||||
newPolyVoxDialog.keyboardEnabled = false;
|
||||
}
|
||||
|
||||
MouseArea {
|
||||
anchors.fill: parent
|
||||
onClicked: {
|
||||
newPolyVoxDialog.keyboardEnabled = HMD.active
|
||||
parent.focus = true;
|
||||
parent.forceActiveFocus();
|
||||
volumeSizeZ.cursorPosition = volumeSizeZ.positionAt(mouseX, mouseY, TextInput.CursorBetweenCharaters);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Rectangle {
|
||||
id: textInputBoxVolumeSizeZ
|
||||
color: "white"
|
||||
anchors.fill: volumeSizeZ
|
||||
opacity: 0.1
|
||||
}
|
||||
}
|
||||
|
||||
Row {
|
||||
id: row1
|
||||
height: 400
|
||||
spacing: 30
|
||||
anchors.top: rowVolumeSize.bottom
|
||||
anchors.topMargin: 5
|
||||
anchors.left: parent.left
|
||||
anchors.leftMargin: 0
|
||||
anchors.right: parent.right
|
||||
anchors.rightMargin: 0
|
||||
|
||||
Column {
|
||||
id: column2
|
||||
width: 200
|
||||
height: 600
|
||||
spacing: 10
|
||||
|
||||
|
||||
CheckBox {
|
||||
id: grabbable
|
||||
text: qsTr("Grabbable")
|
||||
}
|
||||
|
||||
CheckBox {
|
||||
id: collisions
|
||||
text: qsTr("Collisions")
|
||||
}
|
||||
|
||||
Row {
|
||||
id: row2
|
||||
width: 200
|
||||
height: 400
|
||||
spacing: 20
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
Column {
|
||||
id: column3
|
||||
height: 400
|
||||
spacing: 10
|
||||
|
||||
Text {
|
||||
id: text4
|
||||
text: qsTr("Voxel type")
|
||||
color: "#ffffff"
|
||||
font.pixelSize: 12
|
||||
}
|
||||
|
||||
ComboBox {
|
||||
id: surfaceStyle
|
||||
|
||||
property var surfaceStyleArray: ["Marching Cubes",
|
||||
"Cubic",
|
||||
"Edged Cubic",
|
||||
"Edged Marching Cubes"]
|
||||
|
||||
width: 200
|
||||
z: 100
|
||||
transformOrigin: Item.Center
|
||||
model: surfaceStyleArray
|
||||
}
|
||||
|
||||
Text {
|
||||
id: textInitialShape
|
||||
text: qsTr("Initial shape")
|
||||
color: "#ffffff"
|
||||
font.pixelSize: 12
|
||||
}
|
||||
|
||||
ComboBox {
|
||||
id: initialShape
|
||||
|
||||
property var initialShapeArray: ["Sphere",
|
||||
"Box",
|
||||
"Plane"]
|
||||
|
||||
width: 200
|
||||
z: 100
|
||||
transformOrigin: Item.Center
|
||||
model: initialShapeArray
|
||||
}
|
||||
|
||||
Row {
|
||||
id: row3
|
||||
width: 200
|
||||
height: 400
|
||||
spacing: 5
|
||||
|
||||
anchors.horizontalCenter: column3.horizontalCenter
|
||||
anchors.horizontalCenterOffset: -surfaceStyleArray20
|
||||
|
||||
Button {
|
||||
id: button1
|
||||
text: qsTr("Create")
|
||||
z: -1
|
||||
enabled: false
|
||||
onClicked: {
|
||||
newPolyVoxDialog.sendToScript({
|
||||
method: "newPolyVoxDialogAdd",
|
||||
params: {
|
||||
url: xTextureURL.text,
|
||||
dynamic: dynamic.checked,
|
||||
collisionShapeIndex: surfaceStyle.currentIndex,
|
||||
grabbable: grabbable.checked,
|
||||
useOriginalPivot: useOriginalPivot.checked
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
Button {
|
||||
id: button2
|
||||
z: -1
|
||||
text: qsTr("Cancel")
|
||||
onClicked: {
|
||||
newPolyVoxDialog.sendToScript({method: "newPolyVoxDialogCancel"})
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Keyboard {
|
||||
id: keyboard
|
||||
raised: parent.keyboardEnabled && parent.keyboardRaised
|
||||
numeric: parent.punctuationMode
|
||||
anchors {
|
||||
bottom: parent.bottom
|
||||
bottomMargin: 40
|
||||
left: parent.left
|
||||
right: parent.right
|
||||
}
|
||||
}
|
||||
}
|
20
scripts/system/create/qml/NewPolyVoxWindow.qml
Normal file
20
scripts/system/create/qml/NewPolyVoxWindow.qml
Normal file
|
@ -0,0 +1,20 @@
|
|||
import QtQuick 2.7
|
||||
import QtQuick.Controls 2.2
|
||||
|
||||
StackView {
|
||||
id: stackView
|
||||
anchors.fill: parent
|
||||
anchors.leftMargin: 10
|
||||
anchors.rightMargin: 10
|
||||
anchors.topMargin: 40
|
||||
|
||||
signal sendToScript(var message);
|
||||
|
||||
NewPolyVoxDialog {
|
||||
id: dialog
|
||||
anchors.fill: parent
|
||||
Component.onCompleted:{
|
||||
dialog.sendToScript.connect(stackView.sendToScript);
|
||||
}
|
||||
}
|
||||
}
|
50
scripts/system/create/qml/icons/voxels.svg
Normal file
50
scripts/system/create/qml/icons/voxels.svg
Normal file
|
@ -0,0 +1,50 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Generator: Adobe Illustrator 19.2.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||
|
||||
<svg
|
||||
version="1.1"
|
||||
id="Layer_1"
|
||||
x="0px"
|
||||
y="0px"
|
||||
viewBox="0 0 50 50"
|
||||
style="enable-background:new 0 0 50 50;"
|
||||
xml:space="preserve"
|
||||
sodipodi:docname="voxels.svg"
|
||||
inkscape:version="1.1.2 (0a00cf5339, 2022-02-04)"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"><defs
|
||||
id="defs27" /><sodipodi:namedview
|
||||
id="namedview25"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pagecheckerboard="0"
|
||||
showgrid="false"
|
||||
inkscape:zoom="17.42"
|
||||
inkscape:cx="25.028703"
|
||||
inkscape:cy="20.407577"
|
||||
inkscape:window-width="1918"
|
||||
inkscape:window-height="1042"
|
||||
inkscape:window-x="1920"
|
||||
inkscape:window-y="18"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:current-layer="Layer_1" />
|
||||
<style
|
||||
type="text/css"
|
||||
id="style2">
|
||||
.st0{opacity:0.9;}
|
||||
.st1{fill:#1E1E1E;}
|
||||
.st2{fill:#EAEAEA;}
|
||||
</style>
|
||||
|
||||
<path
|
||||
class="st2"
|
||||
d="M 42.986179,11.33074 34.367376,6.3639716 c -0.438244,-0.2921628 -1.02257,-0.2921628 -1.460814,0 L 25.164247,10.892495 17.129769,6.2178902 c -0.438244,-0.2921628 -1.02257,-0.2921628 -1.460814,0 L 7.196233,11.184658 C 6.7579887,11.476821 6.4658259,11.915065 6.4658259,12.35331 v 9.933535 c 0,0.438244 0.2921628,1.02257 0.7304071,1.168651 l 7.888397,4.528524 v 9.057048 c 0,0.438244 0.292162,1.02257 0.730407,1.168651 l 8.618803,4.966768 c 0.292163,0.146081 0.438244,0.146081 0.730407,0.146081 0.292163,0 0.438244,0 0.730407,-0.146081 l 8.618803,-4.966768 c 0.438245,-0.292163 0.730407,-0.730407 0.730407,-1.168651 v -8.910966 l 7.888397,-4.528524 c 0.438244,-0.292163 0.730407,-0.730407 0.730407,-1.168652 V 12.499391 C 43.716586,12.061147 43.424423,11.622902 42.986179,11.33074 Z m -2.04514,8.910965 -5.989337,-3.505954 V 9.8699255 l 5.989337,3.5059535 z m -7.011907,5.551094 -7.304071,-4.236361 v -8.180559 l 5.989338,-3.5059535 v 6.8658255 l -2.921628,1.752977 c -0.584326,0.292163 -0.730407,1.02257 -0.438244,1.606896 0.292162,0.438244 0.584325,0.584326 1.022569,0.584326 0.146082,0 0.438245,0 0.584326,-0.146082 l 2.921628,-1.752977 5.989338,3.505954 z m -7.596234,5.697175 v -6.719745 l 5.989338,3.505954 v 6.719745 z M 23.703433,20.095624 17.714095,16.58967 V 9.7238441 l 5.989338,3.5059539 z M 9.2413727,13.229798 15.230711,9.7238441 V 16.58967 l -3.213791,1.899058 c -0.584326,0.292163 -0.730407,1.02257 -0.438244,1.606896 0.292163,0.438244 0.584325,0.584326 1.02257,0.584326 0.146081,0 0.438244,0 0.584325,-0.146082 l 3.213791,-1.899058 5.989338,3.505954 -5.989338,3.505954 -7.1579893,-4.09028 z m 15.9228743,27.317224 -7.157989,-4.09028 v -8.180559 l 5.989338,-3.505954 v 6.865826 l -2.921629,1.606896 c -0.584325,0.292163 -0.730407,1.02257 -0.438244,1.606895 0.292163,0.438245 0.584326,0.584326 1.02257,0.584326 0.146082,0 0.438244,0 0.584326,-0.146081 l 2.921628,-1.606896 5.989338,3.505954 z"
|
||||
id="path10"
|
||||
style="stroke-width:1.46081;fill:#000000" />
|
||||
|
||||
</svg>
|
After Width: | Height: | Size: 3.2 KiB |
Loading…
Reference in a new issue