diff --git a/asset/icons/icon_nosound.FCStd b/asset/icons/icon_nosound.FCStd new file mode 100644 index 0000000..9d406b6 Binary files /dev/null and b/asset/icons/icon_nosound.FCStd differ diff --git a/asset/icons/icon_nosound.obj b/asset/icons/icon_nosound.obj new file mode 100644 index 0000000..dff4386 --- /dev/null +++ b/asset/icons/icon_nosound.obj @@ -0,0 +1,789 @@ +# FreeCAD v0.19 build24291 (Git) Arch module +# http://www.freecadweb.org +mtllib icon_nosound.mtl +o Extrude +usemtl color_000000 +v 10.858986 -8.496451 0.0 +v 10.768653 -8.687046 0.0 +v 10.768653 -8.687046 3.0 +v 10.858986 -8.496451 3.0 +v 10.970331 -8.387315 0.0 +v 10.970331 -8.387315 3.0 +v 11.103894 -8.32237 0.0 +v 11.103894 -8.32237 3.0 +v 11.225414 -8.296178 0.0 +v 11.225414 -8.296178 3.0 +v 11.363965 -8.290171 0.0 +v 11.363965 -8.290171 3.0 +v 14.949069 -8.290171 0.0 +v 14.949069 -8.290171 3.0 +v 15.31983 -8.346107 0.0 +v 15.31983 -8.346107 3.0 +v 15.500213 -8.443584 0.0 +v 15.500213 -8.443584 3.0 +v 15.622814 -8.576778 0.0 +v 15.622814 -8.576778 3.0 +v 15.698253 -8.73692 0.0 +v 15.698253 -8.73692 3.0 +v 15.731678 -8.886421 0.0 +v 15.731678 -8.886421 3.0 +v 15.74282 -9.057463 0.0 +v 15.74282 -9.057463 3.0 +v 15.74282 -13.052671 0.0 +v 15.74282 -13.052671 3.0 +v 15.74282 -13.145275 0.0 +v 15.74282 -13.145275 3.0 +v 15.663445 -13.581838 0.0 +v 15.663445 -13.581838 3.0 +v 13.864278 -11.782671 0.0 +v 13.864278 -11.782671 3.0 +v 14.062716 -11.729754 0.0 +v 14.062716 -11.729754 3.0 +v 14.419903 -11.729754 0.0 +v 14.419903 -11.729754 3.0 +v 14.419903 -10.406837 0.0 +v 14.419903 -10.406837 3.0 +v 12.488444 -10.406837 0.0 +v 12.488444 -10.406837 3.0 +vn -0.903643786907196 0.42828500270843506 0.0 +vn -0.903643786907196 0.42828500270843506 0.0 +vn -0.6999881267547607 0.7141544818878174 0.0 +vn -0.6999881267547607 0.7141544818878174 0.0 +vn -0.43729478120803833 0.899318277835846 0.0 +vn -0.43729478120803833 0.899318277835846 0.0 +vn -0.21069571375846863 0.9775516986846924 0.0 +vn -0.21069571375846863 0.9775516986846924 0.0 +vn -0.04331665858626366 0.9990614056587219 0.0 +vn -0.04331665858626366 0.9990614056587219 0.0 +vn 0.0 1.0 0.0 +vn 0.0 1.0 -0.0 +vn 0.14917953312397003 0.988810122013092 0.0 +vn 0.14917953312397003 0.988810122013092 -0.0 +vn 0.4754179120063782 0.8797601461410522 -0.0 +vn 0.4754179120063782 0.8797601461410522 0.0 +vn 0.7357574105262756 0.6772451400756836 -0.0 +vn 0.7357574105262756 0.6772451400756836 0.0 +vn 0.9046497941017151 0.42615583539009094 -0.0 +vn 0.9046497941017151 0.42615583539009094 0.0 +vn 0.97590571641922 0.21819256246089935 -0.0 +vn 0.97590571641922 0.21819256246089935 0.0 +vn 0.9978850483894348 0.06500301510095596 -0.0 +vn 0.9978850483894348 0.06500301510095596 0.0 +vn 1.0 0.0 0.0 +vn 1.0 0.0 0.0 +vn 1.0 0.0 0.0 +vn 1.0 0.0 0.0 +vn 0.9838697910308838 -0.17888601124286652 0.0 +vn 0.9838697910308838 -0.17888601124286652 0.0 +vn -0.7071067690849304 -0.7071067690849304 0.0 +vn -0.7071067690849304 -0.7071067690849304 0.0 +vn -0.25766175985336304 0.9662351012229919 0.0 +vn -0.25766175985336304 0.9662351012229919 0.0 +vn 0.0 1.0 0.0 +vn 0.0 1.0 -0.0 +vn -1.0 0.0 0.0 +vn -1.0 0.0 0.0 +vn 0.0 -1.0 0.0 +vn 0.0 -1.0 0.0 +vn -0.7071068286895752 -0.7071068286895752 0.0 +vn -0.7071068286895752 -0.7071068286895752 0.0 +vn 0.0 0.0 -1.0 +vn 0.0 0.0 -1.0 +vn 0.0 0.0 -1.0 +vn 0.0 0.0 -1.0 +vn 0.0 0.0 -1.0 +vn 0.0 -0.0 -1.0 +vn 0.0 0.0 -1.0 +vn 0.0 0.0 -1.0 +vn 0.0 0.0 -1.0 +vn 0.0 0.0 -1.0 +vn 0.0 -0.0 -1.0 +vn 0.0 0.0 -1.0 +vn 0.0 0.0 -1.0 +vn 0.0 0.0 -1.0 +vn 0.0 0.0 -1.0 +vn 0.0 0.0 -1.0 +vn 0.0 -0.0 -1.0 +vn 0.0 0.0 -1.0 +vn 0.0 -0.0 -1.0 +vn 0.0 0.0 1.0 +vn 0.0 0.0 1.0 +vn -0.0 0.0 1.0 +vn 0.0 0.0 1.0 +vn 0.0 0.0 1.0 +vn 0.0 -0.0 1.0 +vn 0.0 0.0 1.0 +vn 0.0 0.0 1.0 +vn 0.0 0.0 1.0 +vn 0.0 0.0 1.0 +vn 0.0 0.0 1.0 +vn 0.0 0.0 1.0 +vn 0.0 0.0 1.0 +vn 0.0 0.0 1.0 +vn -0.0 0.0 1.0 +vn 0.0 0.0 1.0 +vn 0.0 0.0 1.0 +vn -0.0 0.0 1.0 +vn 0.0 0.0 1.0 +f 1//1 2//1 3//1 +f 1//2 3//2 4//2 +f 5//3 4//3 6//3 +f 5//4 1//4 4//4 +f 7//5 6//5 8//5 +f 7//6 5//6 6//6 +f 9//7 8//7 10//7 +f 9//8 7//8 8//8 +f 11//9 10//9 12//9 +f 11//10 9//10 10//10 +f 13//11 11//11 12//11 +f 13//12 12//12 14//12 +f 15//13 13//13 14//13 +f 15//14 14//14 16//14 +f 17//15 16//15 18//15 +f 17//16 15//16 16//16 +f 19//17 18//17 20//17 +f 19//18 17//18 18//18 +f 21//19 20//19 22//19 +f 21//20 19//20 20//20 +f 23//21 22//21 24//21 +f 23//22 21//22 22//22 +f 25//23 24//23 26//23 +f 25//24 23//24 24//24 +f 27//25 25//25 26//25 +f 27//26 26//26 28//26 +f 29//27 27//27 28//27 +f 29//28 28//28 30//28 +f 31//29 29//29 30//29 +f 31//30 30//30 32//30 +f 33//31 31//31 32//31 +f 33//32 32//32 34//32 +f 35//33 33//33 34//33 +f 35//34 34//34 36//34 +f 37//35 35//35 36//35 +f 37//36 36//36 38//36 +f 39//37 37//37 38//37 +f 39//38 38//38 40//38 +f 41//39 39//39 40//39 +f 41//40 40//40 42//40 +f 2//41 41//41 42//41 +f 2//42 42//42 3//42 +f 37//43 27//43 29//43 +f 37//44 29//44 31//44 +f 33//45 35//45 37//45 +f 33//46 37//46 31//46 +f 39//47 27//47 37//47 +f 25//48 27//48 39//48 +f 15//49 17//49 19//49 +f 15//50 19//50 21//50 +f 15//51 21//51 23//51 +f 13//52 23//52 25//52 +f 13//53 25//53 39//53 +f 13//54 15//54 23//54 +f 41//55 13//55 39//55 +f 11//56 13//56 41//56 +f 2//57 9//57 11//57 +f 2//58 11//58 41//58 +f 7//59 9//59 2//59 +f 1//60 5//60 7//60 +f 1//61 7//61 2//61 +f 28//62 38//62 30//62 +f 30//63 38//63 32//63 +f 36//64 34//64 38//64 +f 38//65 34//65 32//65 +f 28//66 40//66 38//66 +f 28//67 26//67 40//67 +f 18//68 16//68 20//68 +f 20//69 16//69 22//69 +f 22//70 16//70 24//70 +f 24//71 14//71 26//71 +f 26//72 14//72 40//72 +f 16//73 14//73 24//73 +f 14//74 42//74 40//74 +f 14//75 12//75 42//75 +f 10//76 3//76 12//76 +f 12//77 3//77 42//77 +f 10//78 8//78 3//78 +f 6//79 4//79 8//79 +f 8//80 4//80 3//80 +o Extrude001 +usemtl color_000000 +v 9.638294 -8.876664 0.0 +v 9.525111 -8.964859 0.0 +v 9.525111 -8.964859 3.0 +v 9.638294 -8.876664 3.0 +v 9.766175 -8.823748 0.0 +v 9.766175 -8.823748 3.0 +v 9.908757 -8.806108 0.0 +v 9.908757 -8.806108 3.0 +v 10.049869 -8.823748 0.0 +v 10.049869 -8.823748 3.0 +v 10.17334 -8.876664 0.0 +v 10.17334 -8.876664 3.0 +v 10.279174 -8.964859 0.0 +v 10.279174 -8.964859 3.0 +v 16.36459 -15.050275 3.0 +v 16.36459 -15.050275 0.0 +v 16.452785 -15.156109 0.0 +v 16.452785 -15.156109 3.0 +v 16.505701 -15.27958 0.0 +v 16.505701 -15.27958 3.0 +v 16.52334 -15.420691 0.0 +v 16.52334 -15.420691 3.0 +v 16.505701 -15.563273 0.0 +v 16.505701 -15.563273 3.0 +v 16.452785 -15.691155 0.0 +v 16.452785 -15.691155 3.0 +v 16.36459 -15.804338 0.0 +v 16.36459 -15.804338 3.0 +v 16.258757 -15.885183 0.0 +v 16.258757 -15.885183 3.0 +v 16.135284 -15.93369 0.0 +v 16.135284 -15.93369 3.0 +v 15.994174 -15.949859 0.0 +v 15.994174 -15.949859 3.0 +v 15.851592 -15.93369 0.0 +v 15.851592 -15.93369 3.0 +v 15.72371 -15.885183 0.0 +v 15.72371 -15.885183 3.0 +v 15.610528 -15.804338 0.0 +v 15.610528 -15.804338 3.0 +v 9.525111 -9.718921 3.0 +v 9.525111 -9.718921 0.0 +v 9.444265 -9.605739 0.0 +v 9.444265 -9.605739 3.0 +v 9.395759 -9.477857 0.0 +v 9.395759 -9.477857 3.0 +v 9.37959 -9.335276 0.0 +v 9.37959 -9.335276 3.0 +v 9.395759 -9.194164 0.0 +v 9.395759 -9.194164 3.0 +v 9.444265 -9.070692 0.0 +v 9.444265 -9.070692 3.0 +vn -0.6146508455276489 0.7887993454933167 0.0 +vn -0.6146508455276489 0.7887993454933167 0.0 +vn -0.3823532164096832 0.9240162372589111 0.0 +vn -0.3823532164096832 0.9240162372589111 0.0 +vn -0.12277647852897644 0.9924343228340149 0.0 +vn -0.12277647852897644 0.9924343228340149 0.0 +vn 0.12403638660907745 0.9922776818275452 0.0 +vn 0.12403638660907745 0.9922776818275452 -0.0 +vn 0.39392101764678955 0.9191442728042603 -0.0 +vn 0.39392101764678955 0.9191442728042603 0.0 +vn 0.6401837468147278 0.7682218551635742 -0.0 +vn 0.6401837468147278 0.7682218551635742 0.0 +vn 0.7071067690849304 0.7071067690849304 0.0 +vn 0.7071067690849304 0.7071067690849304 -0.0 +vn 0.768218457698822 0.6401877999305725 0.0 +vn 0.768218457698822 0.6401877999305725 -0.0 +vn 0.9191468954086304 0.3939150273799896 -0.0 +vn 0.9191468954086304 0.3939150273799896 0.0 +vn 0.9922776818275452 0.12403638660907745 -0.0 +vn 0.9922776818275452 0.12403638660907745 0.0 +vn 0.9924343228340149 -0.12277647852897644 0.0 +vn 0.9924343228340149 -0.12277647852897644 0.0 +vn 0.9240196943283081 -0.38234490156173706 0.0 +vn 0.9240196943283081 -0.38234490156173706 0.0 +vn 0.7887935638427734 -0.6146581768989563 0.0 +vn 0.7887935638427734 -0.6146581768989563 0.0 +vn 0.6070457696914673 -0.7946668863296509 0.0 +vn 0.6070457696914673 -0.7946668863296509 0.0 +vn 0.36565104126930237 -0.9307520389556885 0.0 +vn 0.36565104126930237 -0.9307520389556885 0.0 +vn 0.11383631825447083 -0.9934995174407959 0.0 +vn 0.11383631825447083 -0.9934995174407959 0.0 +vn -0.1126764640212059 -0.9936317205429077 0.0 +vn -0.1126764640212059 -0.9936317205429077 0.0 +vn -0.3546527624130249 -0.934998095035553 0.0 +vn -0.3546527624130249 -0.934998095035553 0.0 +vn -0.5812453031539917 -0.8137283325195312 0.0 +vn -0.5812453031539917 -0.8137283325195312 0.0 +vn -0.7071067690849304 -0.7071067690849304 0.0 +vn -0.7071067690849304 -0.7071067690849304 0.0 +vn -0.8137283325195312 -0.5812453031539917 0.0 +vn -0.8137283325195312 -0.5812453031539917 0.0 +vn -0.934998095035553 -0.3546527624130249 0.0 +vn -0.934998095035553 -0.3546527624130249 0.0 +vn -0.9936316013336182 -0.112677201628685 0.0 +vn -0.9936316013336182 -0.112677201628685 0.0 +vn -0.9934996366500854 0.11383556574583054 0.0 +vn -0.9934996366500854 0.11383556574583054 0.0 +vn -0.9307520389556885 0.36565104126930237 0.0 +vn -0.9307520389556885 0.36565104126930237 0.0 +vn -0.7946668863296509 0.6070457696914673 0.0 +vn -0.7946668863296509 0.6070457696914673 0.0 +vn 0.0 0.0 -1.0 +vn 0.0 0.0 -1.0 +vn 0.0 0.0 -1.0 +vn 0.0 0.0 -1.0 +vn 0.0 0.0 -1.0 +vn 0.0 0.0 -1.0 +vn 0.0 0.0 -1.0 +vn 0.0 0.0 -1.0 +vn 0.0 0.0 -1.0 +vn 0.0 0.0 -1.0 +vn 0.0 -0.0 -1.0 +vn 0.0 0.0 -1.0 +vn 0.0 -0.0 -1.0 +vn 0.0 0.0 -1.0 +vn 0.0 0.0 -1.0 +vn 0.0 0.0 -1.0 +vn 0.0 0.0 -1.0 +vn 0.0 0.0 -1.0 +vn 0.0 0.0 -1.0 +vn 0.0 -0.0 -1.0 +vn 0.0 -0.0 -1.0 +vn 0.0 0.0 -1.0 +vn 0.0 0.0 -1.0 +vn 0.0 -0.0 -1.0 +vn 0.0 0.0 1.0 +vn 0.0 0.0 1.0 +vn 0.0 0.0 1.0 +vn 0.0 0.0 1.0 +vn 0.0 0.0 1.0 +vn 0.0 0.0 1.0 +vn 0.0 0.0 1.0 +vn 0.0 -0.0 1.0 +vn 0.0 -0.0 1.0 +vn 0.0 -0.0 1.0 +vn 0.0 0.0 1.0 +vn 0.0 0.0 1.0 +vn 0.0 0.0 1.0 +vn 0.0 0.0 1.0 +vn 0.0 0.0 1.0 +vn 0.0 0.0 1.0 +vn 0.0 0.0 1.0 +vn 0.0 0.0 1.0 +vn 0.0 0.0 1.0 +vn 0.0 0.0 1.0 +vn 0.0 0.0 1.0 +vn 0.0 0.0 1.0 +vn 0.0 0.0 1.0 +vn 0.0 0.0 1.0 +f 43//81 44//81 45//81 +f 43//82 45//82 46//82 +f 47//83 46//83 48//83 +f 47//84 43//84 46//84 +f 49//85 48//85 50//85 +f 49//86 47//86 48//86 +f 51//87 49//87 50//87 +f 51//88 50//88 52//88 +f 53//89 52//89 54//89 +f 53//90 51//90 52//90 +f 55//91 54//91 56//91 +f 55//92 53//92 54//92 +f 57//93 55//93 56//93 +f 58//94 55//94 57//94 +f 59//95 58//95 57//95 +f 59//96 57//96 60//96 +f 61//97 60//97 62//97 +f 61//98 59//98 60//98 +f 63//99 62//99 64//99 +f 63//100 61//100 62//100 +f 65//101 63//101 64//101 +f 65//102 64//102 66//102 +f 67//103 66//103 68//103 +f 67//104 65//104 66//104 +f 69//105 68//105 70//105 +f 69//106 67//106 68//106 +f 71//107 69//107 70//107 +f 71//108 70//108 72//108 +f 73//109 72//109 74//109 +f 73//110 71//110 72//110 +f 75//111 74//111 76//111 +f 75//112 73//112 74//112 +f 77//113 75//113 76//113 +f 77//114 76//114 78//114 +f 79//115 78//115 80//115 +f 79//116 77//116 78//116 +f 81//117 80//117 82//117 +f 81//118 79//118 80//118 +f 83//119 81//119 82//119 +f 84//120 81//120 83//120 +f 85//121 84//121 83//121 +f 85//122 83//122 86//122 +f 87//123 86//123 88//123 +f 87//124 85//124 86//124 +f 89//125 88//125 90//125 +f 89//126 87//126 88//126 +f 91//127 89//127 90//127 +f 91//128 90//128 92//128 +f 93//129 92//129 94//129 +f 93//130 91//130 92//130 +f 44//131 94//131 45//131 +f 44//132 93//132 94//132 +f 73//133 69//133 71//133 +f 75//134 63//134 65//134 +f 75//135 65//135 67//135 +f 75//136 67//136 69//136 +f 75//137 69//137 73//137 +f 58//138 59//138 61//138 +f 58//139 61//139 63//139 +f 58//140 75//140 77//140 +f 58//141 77//141 79//141 +f 58//142 79//142 81//142 +f 58//143 63//143 75//143 +f 84//144 58//144 81//144 +f 55//145 58//145 84//145 +f 85//146 55//146 84//146 +f 87//147 55//147 85//147 +f 51//148 53//148 55//148 +f 49//149 51//149 55//149 +f 89//150 55//150 87//150 +f 89//151 49//151 55//151 +f 47//152 49//152 89//152 +f 43//153 47//153 89//153 +f 44//154 89//154 91//154 +f 44//155 91//155 93//155 +f 44//156 43//156 89//156 +f 70//157 74//157 72//157 +f 64//158 76//158 66//158 +f 66//159 76//159 68//159 +f 68//160 76//160 70//160 +f 70//161 76//161 74//161 +f 60//162 57//162 62//162 +f 62//163 57//163 64//163 +f 76//164 57//164 78//164 +f 78//165 57//165 80//165 +f 80//166 57//166 82//166 +f 64//167 57//167 76//167 +f 57//168 83//168 82//168 +f 57//169 56//169 83//169 +f 56//170 86//170 83//170 +f 56//171 88//171 86//171 +f 54//172 52//172 56//172 +f 52//173 50//173 56//173 +f 56//174 90//174 88//174 +f 50//175 90//175 56//175 +f 50//176 48//176 90//176 +f 48//177 46//177 90//177 +f 90//178 45//178 92//178 +f 92//179 45//179 94//179 +f 46//180 45//180 90//180 +o Extrude002 +usemtl color_000000 +v 9.154695 -13.819963 0.0 +v 9.128236 -13.833192 0.0 +v 9.128236 -13.833192 3.0 +v 9.154695 -13.819963 3.0 +v 9.558429 -13.506382 0.0 +v 9.558429 -13.506382 3.0 +v 9.826687 -13.374091 0.0 +v 9.826687 -13.374091 3.0 +v 10.107195 -13.290796 0.0 +v 10.107195 -13.290796 3.0 +v 10.120423 -13.290796 0.0 +v 10.120423 -13.290796 3.0 +v 10.715736 -13.317254 0.0 +v 10.715736 -13.317254 3.0 +v 10.715736 -11.650379 0.0 +v 10.715736 -11.650379 3.0 +v 11.77407 -12.708713 0.0 +v 11.77407 -12.708713 3.0 +v 11.77407 -14.904755 0.0 +v 11.77407 -14.904755 3.0 +v 11.73637 -15.20638 0.0 +v 11.73637 -15.20638 3.0 +v 11.591509 -15.508004 0.0 +v 11.591509 -15.508004 3.0 +v 11.435403 -15.709087 0.0 +v 11.435403 -15.709087 3.0 +v 11.231673 -15.910172 0.0 +v 11.231673 -15.910172 3.0 +v 11.218445 -15.949859 0.0 +v 11.218445 -15.949859 3.0 +v 10.884776 -16.214441 0.0 +v 10.884776 -16.214441 3.0 +v 10.518769 -16.390831 0.0 +v 10.518769 -16.390831 3.0 +v 10.120423 -16.479025 0.0 +v 10.120423 -16.479025 3.0 +v 10.107195 -16.479025 0.0 +v 10.107195 -16.479025 3.0 +v 9.676512 -16.465796 0.0 +v 9.676512 -16.465796 3.0 +v 9.301685 -16.337914 0.0 +v 9.301685 -16.337914 3.0 +v 8.982716 -16.095379 0.0 +v 8.982716 -16.095379 3.0 +v 8.741651 -15.77788 0.0 +v 8.741651 -15.77788 3.0 +v 8.618178 -15.407463 0.0 +v 8.618178 -15.407463 3.0 +v 8.612299 -14.984129 0.0 +v 8.612299 -14.984129 3.0 +v 8.693143 -14.562265 0.0 +v 8.693143 -14.562265 3.0 +v 8.865122 -14.178619 0.0 +v 8.865122 -14.178619 3.0 +vn -0.4472135901451111 0.8944271802902222 0.0 +vn -0.4472135901451111 0.8944271802902222 0.0 +vn -0.6134102940559387 0.789764404296875 0.0 +vn -0.6134102940559387 0.789764404296875 0.0 +vn -0.4422902762889862 0.8968719840049744 0.0 +vn -0.4422902762889862 0.8968719840049744 0.0 +vn -0.2846581041812897 0.9586291313171387 0.0 +vn -0.2846581041812897 0.9586291313171387 0.0 +vn 0.0 1.0 0.0 +vn 0.0 1.0 -0.0 +vn 0.044399652630090714 0.9990138411521912 0.0 +vn 0.044399652630090714 0.9990138411521912 -0.0 +vn -1.0 0.0 0.0 +vn -1.0 0.0 0.0 +vn 0.7071067690849304 0.7071067690849304 0.0 +vn 0.7071067690849304 0.7071067690849304 -0.0 +vn 1.0 0.0 0.0 +vn 1.0 0.0 0.0 +vn 0.9922792315483093 -0.12402353435754776 0.0 +vn 0.9922792315483093 -0.12402353435754776 0.0 +vn 0.9014279842376709 -0.4329291880130768 0.0 +vn 0.9014279842376709 -0.4329291880130768 0.0 +vn 0.7899078130722046 -0.6132255792617798 0.0 +vn 0.7899078130722046 -0.6132255792617798 0.0 +vn 0.7024707794189453 -0.7117125988006592 0.0 +vn 0.7024707794189453 -0.7117125988006592 0.0 +vn 0.9486877918243408 -0.31621405482292175 0.0 +vn 0.9486877918243408 -0.31621405482292175 0.0 +vn 0.6213209629058838 -0.7835561633110046 0.0 +vn 0.6213209629058838 -0.7835561633110046 0.0 +vn 0.43414363265037537 -0.9008437395095825 0.0 +vn 0.43414363265037537 -0.9008437395095825 0.0 +vn 0.21616561710834503 -0.9763566851615906 0.0 +vn 0.21616561710834503 -0.9763566851615906 0.0 +vn 0.0 -1.0 0.0 +vn 0.0 -1.0 0.0 +vn -0.03070269525051117 -0.9995285868644714 0.0 +vn -0.03070269525051117 -0.9995285868644714 0.0 +vn -0.3229007422924042 -0.9464328289031982 0.0 +vn -0.3229007422924042 -0.9464328289031982 0.0 +vn -0.6052693724632263 -0.7960207462310791 0.0 +vn -0.6052693724632263 -0.7960207462310791 0.0 +vn -0.7964453101158142 -0.604710578918457 0.0 +vn -0.7964453101158142 -0.604710578918457 0.0 +vn -0.9486833214759827 -0.3162277638912201 0.0 +vn -0.9486833214759827 -0.3162277638912201 0.0 +vn -0.9999036192893982 -0.01388698723167181 0.0 +vn -0.9999036192893982 -0.01388698723167181 0.0 +vn -0.9821286797523499 0.18821047246456146 0.0 +vn -0.9821286797523499 0.18821047246456146 0.0 +vn -0.9125096201896667 0.40905535221099854 0.0 +vn -0.9125096201896667 0.40905535221099854 0.0 +vn -0.7955081462860107 0.6059427857398987 0.0 +vn -0.7955081462860107 0.6059427857398987 0.0 +vn 0.0 0.0 -1.0 +vn 0.0 0.0 -1.0 +vn 0.0 0.0 -1.0 +vn 0.0 0.0 -1.0 +vn 0.0 0.0 -1.0 +vn 0.0 0.0 -1.0 +vn 0.0 0.0 -1.0 +vn 0.0 0.0 -1.0 +vn 0.0 0.0 -1.0 +vn 0.0 0.0 -1.0 +vn 0.0 0.0 -1.0 +vn 0.0 0.0 -1.0 +vn 0.0 0.0 -1.0 +vn 0.0 -0.0 -1.0 +vn 0.0 0.0 -1.0 +vn 0.0 0.0 -1.0 +vn 0.0 0.0 -1.0 +vn 0.0 0.0 -1.0 +vn 0.0 0.0 -1.0 +vn 0.0 0.0 -1.0 +vn 0.0 -0.0 -1.0 +vn 0.0 0.0 -1.0 +vn 0.0 -0.0 -1.0 +vn 0.0 -0.0 -1.0 +vn 0.0 0.0 -1.0 +vn 0.0 0.0 1.0 +vn 0.0 -0.0 1.0 +vn 0.0 -0.0 1.0 +vn 0.0 0.0 1.0 +vn 0.0 0.0 1.0 +vn 0.0 0.0 1.0 +vn 0.0 0.0 1.0 +vn 0.0 0.0 1.0 +vn 0.0 0.0 1.0 +vn 0.0 0.0 1.0 +vn 0.0 0.0 1.0 +vn 0.0 0.0 1.0 +vn 0.0 0.0 1.0 +vn 0.0 0.0 1.0 +vn -0.0 0.0 1.0 +vn 0.0 0.0 1.0 +vn 0.0 0.0 1.0 +vn 0.0 0.0 1.0 +vn 0.0 0.0 1.0 +vn 0.0 0.0 1.0 +vn 0.0 0.0 1.0 +vn 0.0 0.0 1.0 +vn 0.0 0.0 1.0 +vn 0.0 0.0 1.0 +vn 0.0 0.0 1.0 +f 95//181 96//181 97//181 +f 95//182 97//182 98//182 +f 99//183 95//183 98//183 +f 99//184 98//184 100//184 +f 101//185 100//185 102//185 +f 101//186 99//186 100//186 +f 103//187 102//187 104//187 +f 103//188 101//188 102//188 +f 105//189 103//189 104//189 +f 105//190 104//190 106//190 +f 107//191 105//191 106//191 +f 107//192 106//192 108//192 +f 109//193 107//193 108//193 +f 109//194 108//194 110//194 +f 111//195 109//195 110//195 +f 111//196 110//196 112//196 +f 113//197 111//197 112//197 +f 113//198 112//198 114//198 +f 115//199 113//199 114//199 +f 115//200 114//200 116//200 +f 117//201 116//201 118//201 +f 117//202 115//202 116//202 +f 119//203 118//203 120//203 +f 119//204 117//204 118//204 +f 121//205 120//205 122//205 +f 121//206 119//206 120//206 +f 123//207 121//207 122//207 +f 123//208 122//208 124//208 +f 125//209 123//209 124//209 +f 125//210 124//210 126//210 +f 127//211 126//211 128//211 +f 127//212 125//212 126//212 +f 129//213 128//213 130//213 +f 129//214 127//214 128//214 +f 131//215 129//215 130//215 +f 131//216 130//216 132//216 +f 133//217 131//217 132//217 +f 133//218 132//218 134//218 +f 135//219 134//219 136//219 +f 135//220 133//220 134//220 +f 137//221 136//221 138//221 +f 137//222 135//222 136//222 +f 139//223 137//223 138//223 +f 139//224 138//224 140//224 +f 141//225 140//225 142//225 +f 141//226 139//226 140//226 +f 143//227 142//227 144//227 +f 143//228 141//228 142//228 +f 145//229 143//229 144//229 +f 145//230 144//230 146//230 +f 147//231 146//231 148//231 +f 147//232 145//232 146//232 +f 96//233 148//233 97//233 +f 96//234 147//234 148//234 +f 125//235 121//235 123//235 +f 113//236 115//236 117//236 +f 113//237 117//237 119//237 +f 131//238 127//238 129//238 +f 137//239 133//239 135//239 +f 107//240 111//240 113//240 +f 141//241 137//241 139//241 +f 143//242 131//242 133//242 +f 143//243 127//243 131//243 +f 143//244 133//244 137//244 +f 143//245 137//245 141//245 +f 145//246 125//246 127//246 +f 145//247 121//247 125//247 +f 145//248 127//248 143//248 +f 101//249 103//249 105//249 +f 101//250 105//250 107//250 +f 101//251 107//251 113//251 +f 99//252 119//252 121//252 +f 99//253 113//253 119//253 +f 99//254 101//254 113//254 +f 147//255 121//255 145//255 +f 95//256 99//256 121//256 +f 95//257 121//257 147//257 +f 96//258 95//258 147//258 +f 109//259 111//259 107//259 +f 122//260 126//260 124//260 +f 116//261 114//261 118//261 +f 118//262 114//262 120//262 +f 128//263 132//263 130//263 +f 134//264 138//264 136//264 +f 112//265 108//265 114//265 +f 138//266 142//266 140//266 +f 132//267 144//267 134//267 +f 128//268 144//268 132//268 +f 134//269 144//269 138//269 +f 138//270 144//270 142//270 +f 126//271 146//271 128//271 +f 122//272 146//272 126//272 +f 128//273 146//273 144//273 +f 104//274 102//274 106//274 +f 106//275 102//275 108//275 +f 108//276 102//276 114//276 +f 120//277 100//277 122//277 +f 114//278 100//278 120//278 +f 102//279 100//279 114//279 +f 122//280 148//280 146//280 +f 100//281 98//281 122//281 +f 122//282 98//282 148//282 +f 98//283 97//283 148//283 +f 112//284 110//284 108//284 +o Extrude003 +usemtl color_000000 +v 13.99657 -14.931212 0.0 +v 12.55459 -13.489234 0.0 +v 12.55459 -13.489234 3.0 +v 13.99657 -14.931212 3.0 +v 13.589406 -14.895939 0.0 +v 13.589406 -14.895939 3.0 +v 13.232218 -14.754826 0.0 +v 13.232218 -14.754826 3.0 +v 12.925007 -14.507879 0.0 +v 12.925007 -14.507879 3.0 +v 12.70746 -14.224187 0.0 +v 12.70746 -14.224187 3.0 +v 12.583988 -13.884639 0.0 +v 12.583988 -13.884639 3.0 +vn 0.7071065306663513 0.7071070075035095 0.0 +vn 0.7071065306663513 0.7071070075035095 -0.0 +vn -0.08630910515785217 -0.9962684512138367 0.0 +vn -0.08630910515785217 -0.9962684512138367 0.0 +vn -0.367432177066803 -0.9300503134727478 0.0 +vn -0.367432177066803 -0.9300503134727478 0.0 +vn -0.6265150904655457 -0.7794093489646912 0.0 +vn -0.6265150904655457 -0.7794093489646912 0.0 +vn -0.7935402393341064 -0.6085178852081299 0.0 +vn -0.7935402393341064 -0.6085178852081299 0.0 +vn -0.9397932291030884 -0.34174346923828125 0.0 +vn -0.9397932291030884 -0.34174346923828125 0.0 +vn -0.9972474575042725 -0.0741443857550621 0.0 +vn -0.9972474575042725 -0.0741443857550621 0.0 +vn 0.0 0.0 -1.0 +vn 0.0 0.0 -1.0 +vn 0.0 0.0 -1.0 +vn 0.0 0.0 -1.0 +vn 0.0 0.0 -1.0 +vn 0.0 0.0 1.0 +vn 0.0 0.0 1.0 +vn 0.0 0.0 1.0 +vn 0.0 0.0 1.0 +vn 0.0 0.0 1.0 +f 149//285 150//285 151//285 +f 149//286 151//286 152//286 +f 153//287 149//287 152//287 +f 153//288 152//288 154//288 +f 155//289 154//289 156//289 +f 155//290 153//290 154//290 +f 157//291 156//291 158//291 +f 157//292 155//292 156//292 +f 159//293 157//293 158//293 +f 159//294 158//294 160//294 +f 161//295 160//295 162//295 +f 161//296 159//296 160//296 +f 150//297 162//297 151//297 +f 150//298 161//298 162//298 +f 157//299 149//299 153//299 +f 157//300 153//300 155//300 +f 161//301 157//301 159//301 +f 150//302 149//302 157//302 +f 150//303 157//303 161//303 +f 152//304 158//304 154//304 +f 154//305 158//305 156//305 +f 158//306 162//306 160//306 +f 152//307 151//307 158//307 +f 158//308 151//308 162//308 diff --git a/asset/icons/icon_nosound.svg b/asset/icons/icon_nosound.svg new file mode 100644 index 0000000..e4fe9a0 --- /dev/null +++ b/asset/icons/icon_nosound.svg @@ -0,0 +1,58 @@ + + + + + + image/svg+xml + + + + + + + + + + + diff --git a/asset/icons/icon_pan.svg b/asset/icons/icon_pan.svg index 283ea2c..6285e50 100644 --- a/asset/icons/icon_pan.svg +++ b/asset/icons/icon_pan.svg @@ -19,7 +19,7 @@ image/svg+xml - + @@ -37,7 +37,7 @@ id="namedview10" showgrid="false" inkscape:zoom="1.7451937" - inkscape:cx="259.11091" + inkscape:cx="260.25691" inkscape:cy="-18.435883" inkscape:window-x="0" inkscape:window-y="27" @@ -47,12 +47,12 @@ id="defs2" /> diff --git a/asset/icons/icon_sound.FCStd b/asset/icons/icon_sound.FCStd new file mode 100644 index 0000000..e650a09 Binary files /dev/null and b/asset/icons/icon_sound.FCStd differ diff --git a/asset/icons/icon_sound.obj b/asset/icons/icon_sound.obj new file mode 100644 index 0000000..dd1506c --- /dev/null +++ b/asset/icons/icon_sound.obj @@ -0,0 +1,637 @@ +# FreeCAD v0.19 build24291 (Git) Arch module +# http://www.freecadweb.org +mtllib icon_sound.mtl +o Extrude +usemtl color_000000 +v 16.233683 -14.491642 0.0 +v 16.233683 -10.496433 0.0 +v 16.233683 -10.496433 3.0 +v 16.233683 -14.491642 3.0 +v 16.233683 -14.584246 0.0 +v 16.233683 -14.584246 3.0 +v 16.139608 -15.039917 0.0 +v 16.139608 -15.039917 3.0 +v 15.963219 -15.436791 0.0 +v 15.963219 -15.436791 3.0 +v 15.704515 -15.774871 0.0 +v 15.704515 -15.774871 3.0 +v 15.678058 -15.774871 0.0 +v 15.678058 -15.774871 3.0 +v 15.341449 -16.074732 0.0 +v 15.341449 -16.074732 3.0 +v 14.966621 -16.268761 0.0 +v 14.966621 -16.268761 3.0 +v 14.553578 -16.356955 0.0 +v 14.553578 -16.356955 3.0 +v 14.540349 -16.356955 0.0 +v 14.540349 -16.356955 3.0 +v 14.115545 -16.340786 0.0 +v 14.115545 -16.340786 3.0 +v 13.740719 -16.204084 0.0 +v 13.740719 -16.204084 3.0 +v 13.41587 -15.94685 0.0 +v 13.41587 -15.94685 3.0 +v 13.180684 -15.63229 0.0 +v 13.180684 -15.63229 3.0 +v 13.057212 -15.253054 0.0 +v 13.057212 -15.253054 3.0 +v 13.045453 -14.809142 0.0 +v 13.045453 -14.809142 3.0 +v 13.133648 -14.403447 0.0 +v 13.133648 -14.403447 3.0 +v 13.310037 -14.033031 0.0 +v 13.310037 -14.033031 3.0 +v 13.57462 -13.697892 0.0 +v 13.57462 -13.697892 3.0 +v 13.990113 -13.371246 0.0 +v 13.990113 -13.371246 3.0 +v 14.265721 -13.241405 0.0 +v 14.265721 -13.241405 3.0 +v 14.553578 -13.168725 0.0 +v 14.553578 -13.168725 3.0 +v 14.910766 -13.168725 0.0 +v 14.910766 -13.168725 3.0 +v 14.910766 -11.845809 0.0 +v 14.910766 -11.845809 3.0 +v 12.264933 -11.845809 0.0 +v 12.264933 -11.845809 3.0 +v 12.264933 -16.343725 0.0 +v 12.264933 -16.343725 3.0 +v 12.227233 -16.645351 0.0 +v 12.227233 -16.645351 3.0 +v 12.082372 -16.946976 0.0 +v 12.082372 -16.946976 3.0 +v 11.926267 -17.148058 0.0 +v 11.926267 -17.148058 3.0 +v 11.722536 -17.349142 0.0 +v 11.722536 -17.349142 3.0 +v 11.709308 -17.38883 0.0 +v 11.709308 -17.38883 3.0 +v 11.375639 -17.653414 0.0 +v 11.375639 -17.653414 3.0 +v 11.009632 -17.829802 0.0 +v 11.009632 -17.829802 3.0 +v 10.611286 -17.917995 0.0 +v 10.611286 -17.917995 3.0 +v 10.598058 -17.917995 0.0 +v 10.598058 -17.917995 3.0 +v 10.167375 -17.904768 0.0 +v 10.167375 -17.904768 3.0 +v 9.792548 -17.776884 0.0 +v 9.792548 -17.776884 3.0 +v 9.473578 -17.534349 0.0 +v 9.473578 -17.534349 3.0 +v 9.232513 -17.21685 0.0 +v 9.232513 -17.21685 3.0 +v 9.109041 -16.846434 0.0 +v 9.109041 -16.846434 3.0 +v 9.103162 -16.4231 0.0 +v 9.103162 -16.4231 3.0 +v 9.184006 -16.001236 0.0 +v 9.184006 -16.001236 3.0 +v 9.355985 -15.61759 0.0 +v 9.355985 -15.61759 3.0 +v 9.619099 -15.272162 0.0 +v 9.619099 -15.272162 3.0 +v 9.645557 -15.258934 0.0 +v 9.645557 -15.258934 3.0 +v 10.049292 -14.945354 0.0 +v 10.049292 -14.945354 3.0 +v 10.31755 -14.813062 0.0 +v 10.31755 -14.813062 3.0 +v 10.598058 -14.729767 0.0 +v 10.598058 -14.729767 3.0 +v 10.611286 -14.729767 0.0 +v 10.611286 -14.729767 3.0 +v 11.206599 -14.756226 0.0 +v 11.206599 -14.756226 3.0 +v 11.206599 -10.522892 0.0 +v 11.206599 -10.522892 3.0 +v 11.253823 -10.106966 0.0 +v 11.253823 -10.106966 3.0 +v 11.324765 -9.956154 0.0 +v 11.324765 -9.956154 3.0 +v 11.425388 -9.844931 0.0 +v 11.425388 -9.844931 3.0 +v 11.560803 -9.769015 0.0 +v 11.560803 -9.769015 3.0 +v 11.696816 -9.735796 0.0 +v 11.696816 -9.735796 3.0 +v 11.854828 -9.729142 0.0 +v 11.854828 -9.729142 3.0 +v 15.439933 -9.729142 0.0 +v 15.439933 -9.729142 3.0 +v 15.810693 -9.785078 0.0 +v 15.810693 -9.785078 3.0 +v 15.991076 -9.882555 0.0 +v 15.991076 -9.882555 3.0 +v 16.113678 -10.01575 0.0 +v 16.113678 -10.01575 3.0 +v 16.189116 -10.175891 0.0 +v 16.189116 -10.175891 3.0 +v 16.22254 -10.325392 0.0 +v 16.22254 -10.325392 3.0 +vn 1.0 0.0 0.0 +vn 1.0 0.0 0.0 +vn 1.0 0.0 0.0 +vn 1.0 0.0 0.0 +vn 0.9793466925621033 -0.20218807458877563 0.0 +vn 0.9793466925621033 -0.20218807458877563 0.0 +vn 0.913810670375824 -0.4061405062675476 0.0 +vn 0.913810670375824 -0.4061405062675476 0.0 +vn 0.794162929058075 -0.6077048778533936 0.0 +vn 0.794162929058075 -0.6077048778533936 0.0 +vn 0.0 -1.0 0.0 +vn 0.0 -1.0 0.0 +vn 0.6651726961135864 -0.7466895580291748 0.0 +vn 0.6651726961135864 -0.7466895580291748 0.0 +vn 0.45970815420150757 -0.8880700469017029 0.0 +vn 0.45970815420150757 -0.8880700469017029 0.0 +vn 0.20881523191928864 -0.977955162525177 0.0 +vn 0.20881523191928864 -0.977955162525177 0.0 +vn 0.0 -1.0 0.0 +vn 0.0 -1.0 0.0 +vn -0.03803378716111183 -0.9992763996124268 0.0 +vn -0.03803378716111183 -0.9992763996124268 0.0 +vn -0.3426307439804077 -0.9394701719284058 0.0 +vn -0.3426307439804077 -0.9394701719284058 0.0 +vn -0.6207954287528992 -0.7839725613594055 0.0 +vn -0.6207954287528992 -0.7839725613594055 0.0 +vn -0.8008965253829956 -0.5988027453422546 0.0 +vn -0.8008965253829956 -0.5988027453422546 0.0 +vn -0.9508714079856873 -0.30958592891693115 0.0 +vn -0.9508714079856873 -0.30958592891693115 0.0 +vn -0.9996493458747864 -0.026479780673980713 0.0 +vn -0.9996493458747864 -0.026479780673980713 0.0 +vn -0.9771762490272522 0.21243032813072205 0.0 +vn -0.9771762490272522 0.21243032813072205 0.0 +vn -0.9028606414794922 0.4299333095550537 0.0 +vn -0.9028606414794922 0.4299333095550537 0.0 +vn -0.7848819494247437 0.6196452975273132 0.0 +vn -0.7848819494247437 0.6196452975273132 0.0 +vn -0.6180403828620911 0.7861464023590088 0.0 +vn -0.6180403828620911 0.7861464023590088 0.0 +vn -0.42618367075920105 0.9046366810798645 0.0 +vn -0.42618367075920105 0.9046366810798645 0.0 +vn -0.24480240046977997 0.9695729613304138 0.0 +vn -0.24480240046977997 0.9695729613304138 0.0 +vn 0.0 1.0 0.0 +vn 0.0 1.0 -0.0 +vn -1.0 0.0 0.0 +vn -1.0 0.0 0.0 +vn 0.0 -1.0 0.0 +vn 0.0 -1.0 0.0 +vn 1.0 0.0 0.0 +vn 1.0 0.0 0.0 +vn 0.9922793507575989 -0.12402315437793732 0.0 +vn 0.9922793507575989 -0.12402315437793732 0.0 +vn 0.9014279842376709 -0.4329291880130768 0.0 +vn 0.9014279842376709 -0.4329291880130768 0.0 +vn 0.7899082899093628 -0.6132250428199768 0.0 +vn 0.7899082899093628 -0.6132250428199768 0.0 +vn 0.7024691104888916 -0.7117142081260681 0.0 +vn 0.7024691104888916 -0.7117142081260681 0.0 +vn 0.9486901760101318 -0.31620725989341736 0.0 +vn 0.9486901760101318 -0.31620725989341736 0.0 +vn 0.6213223338127136 -0.7835550904273987 0.0 +vn 0.6213223338127136 -0.7835550904273987 0.0 +vn 0.43413978815078735 -0.900845468044281 0.0 +vn 0.43413978815078735 -0.900845468044281 0.0 +vn 0.21616561710834503 -0.9763566851615906 0.0 +vn 0.21616561710834503 -0.9763566851615906 0.0 +vn 0.0 -1.0 0.0 +vn 0.0 -1.0 0.0 +vn -0.030698275193572044 -0.9995287656784058 0.0 +vn -0.030698275193572044 -0.9995287656784058 0.0 +vn -0.3229050636291504 -0.9464313983917236 0.0 +vn -0.3229050636291504 -0.9464313983917236 0.0 +vn -0.6052693724632263 -0.7960207462310791 0.0 +vn -0.6052693724632263 -0.7960207462310791 0.0 +vn -0.7964453101158142 -0.604710578918457 0.0 +vn -0.7964453101158142 -0.604710578918457 0.0 +vn -0.9486833214759827 -0.3162277638912201 0.0 +vn -0.9486833214759827 -0.3162277638912201 0.0 +vn -0.9999036192893982 -0.01388698723167181 0.0 +vn -0.9999036192893982 -0.01388698723167181 0.0 +vn -0.9821286797523499 0.18821047246456146 0.0 +vn -0.9821286797523499 0.18821047246456146 0.0 +vn -0.9125096201896667 0.40905535221099854 0.0 +vn -0.9125096201896667 0.40905535221099854 0.0 +vn -0.7955081462860107 0.6059427857398987 0.0 +vn -0.7955081462860107 0.6059427857398987 0.0 +vn -0.4471878111362457 0.8944401144981384 0.0 +vn -0.4471878111362457 0.8944401144981384 0.0 +vn -0.6134102940559387 0.789764404296875 0.0 +vn -0.6134102940559387 0.789764404296875 0.0 +vn -0.44229283928871155 0.8968707323074341 0.0 +vn -0.44229283928871155 0.8968707323074341 0.0 +vn -0.2846581041812897 0.9586291313171387 0.0 +vn -0.2846581041812897 0.9586291313171387 0.0 +vn 0.0 1.0 0.0 +vn 0.0 1.0 -0.0 +vn 0.044401250779628754 0.9990137815475464 0.0 +vn 0.044401250779628754 0.9990137815475464 -0.0 +vn -1.0 0.0 0.0 +vn -1.0 0.0 0.0 +vn -0.9936160445213318 0.11281470954418182 0.0 +vn -0.9936160445213318 0.11281470954418182 0.0 +vn -0.9048845767974854 0.4256570637226105 0.0 +vn -0.9048845767974854 0.4256570637226105 0.0 +vn -0.7415603399276733 0.670886218547821 0.0 +vn -0.7415603399276733 0.670886218547821 0.0 +vn -0.4890097975730896 0.8722782731056213 0.0 +vn -0.4890097975730896 0.8722782731056213 0.0 +vn -0.23726239800453186 0.9714455604553223 0.0 +vn -0.23726239800453186 0.9714455604553223 0.0 +vn -0.04207223653793335 0.9991145730018616 0.0 +vn -0.04207223653793335 0.9991145730018616 0.0 +vn 0.0 1.0 0.0 +vn 0.0 1.0 -0.0 +vn 0.14917992055416107 0.9888100624084473 0.0 +vn 0.14917992055416107 0.9888100624084473 -0.0 +vn 0.4754142761230469 0.8797619938850403 -0.0 +vn 0.4754142761230469 0.8797619938850403 0.0 +vn 0.7357572913169861 0.6772454380989075 -0.0 +vn 0.7357572913169861 0.6772454380989075 0.0 +vn 0.9046509265899658 0.4261535108089447 -0.0 +vn 0.9046509265899658 0.4261535108089447 0.0 +vn 0.975907027721405 0.2181866317987442 -0.0 +vn 0.975907027721405 0.2181866317987442 0.0 +vn 0.9978846907615662 0.06500855833292007 -0.0 +vn 0.9978846907615662 0.06500855833292007 0.0 +vn 0.0 0.0 -1.0 +vn 0.0 0.0 -1.0 +vn 0.0 0.0 -1.0 +vn 0.0 0.0 -1.0 +vn 0.0 0.0 -1.0 +vn 0.0 0.0 -1.0 +vn 0.0 0.0 -1.0 +vn 0.0 0.0 -1.0 +vn 0.0 0.0 -1.0 +vn 0.0 0.0 -1.0 +vn 0.0 0.0 -1.0 +vn 0.0 0.0 -1.0 +vn 0.0 0.0 -1.0 +vn 0.0 0.0 -1.0 +vn 0.0 0.0 -1.0 +vn 0.0 -0.0 -1.0 +vn 0.0 0.0 -1.0 +vn 0.0 0.0 -1.0 +vn 0.0 0.0 -1.0 +vn 0.0 0.0 -1.0 +vn 0.0 0.0 -1.0 +vn 0.0 0.0 -1.0 +vn 0.0 -0.0 -1.0 +vn 0.0 0.0 -1.0 +vn 0.0 -0.0 -1.0 +vn 0.0 0.0 -1.0 +vn 0.0 0.0 -1.0 +vn 0.0 -0.0 -1.0 +vn 0.0 0.0 -1.0 +vn 0.0 0.0 -1.0 +vn 0.0 0.0 -1.0 +vn 0.0 0.0 -1.0 +vn 0.0 0.0 -1.0 +vn 0.0 0.0 -1.0 +vn 0.0 0.0 -1.0 +vn 0.0 0.0 -1.0 +vn 0.0 0.0 -1.0 +vn 0.0 0.0 -1.0 +vn 0.0 -0.0 -1.0 +vn 0.0 -0.0 -1.0 +vn 0.0 0.0 -1.0 +vn 0.0 0.0 -1.0 +vn 0.0 0.0 -1.0 +vn 0.0 0.0 -1.0 +vn 0.0 0.0 -1.0 +vn 0.0 0.0 -1.0 +vn 0.0 0.0 -1.0 +vn 0.0 0.0 -1.0 +vn 0.0 -0.0 -1.0 +vn 0.0 0.0 -1.0 +vn 0.0 -0.0 -1.0 +vn 0.0 -0.0 -1.0 +vn 0.0 0.0 -1.0 +vn 0.0 0.0 -1.0 +vn 0.0 -0.0 -1.0 +vn 0.0 0.0 -1.0 +vn 0.0 -0.0 -1.0 +vn 0.0 -0.0 -1.0 +vn 0.0 -0.0 -1.0 +vn 0.0 -0.0 -1.0 +vn 0.0 -0.0 -1.0 +vn 0.0 0.0 -1.0 +vn 0.0 -0.0 1.0 +vn 0.0 0.0 1.0 +vn 0.0 0.0 1.0 +vn 0.0 0.0 1.0 +vn 0.0 0.0 1.0 +vn 0.0 -0.0 1.0 +vn 0.0 -0.0 1.0 +vn 0.0 0.0 1.0 +vn 0.0 0.0 1.0 +vn 0.0 0.0 1.0 +vn 0.0 0.0 1.0 +vn 0.0 0.0 1.0 +vn 0.0 0.0 1.0 +vn 0.0 0.0 1.0 +vn 0.0 0.0 1.0 +vn 0.0 0.0 1.0 +vn -0.0 0.0 1.0 +vn 0.0 0.0 1.0 +vn 0.0 0.0 1.0 +vn 0.0 0.0 1.0 +vn 0.0 0.0 1.0 +vn 0.0 0.0 1.0 +vn 0.0 0.0 1.0 +vn 0.0 0.0 1.0 +vn 0.0 0.0 1.0 +vn 0.0 0.0 1.0 +vn 0.0 0.0 1.0 +vn 0.0 -0.0 1.0 +vn 0.0 0.0 1.0 +vn 0.0 0.0 1.0 +vn 0.0 0.0 1.0 +vn 0.0 0.0 1.0 +vn 0.0 0.0 1.0 +vn 0.0 0.0 1.0 +vn 0.0 0.0 1.0 +vn 0.0 0.0 1.0 +vn 0.0 0.0 1.0 +vn 0.0 0.0 1.0 +vn 0.0 0.0 1.0 +vn 0.0 0.0 1.0 +vn 0.0 0.0 1.0 +vn 0.0 0.0 1.0 +vn 0.0 0.0 1.0 +vn -0.0 0.0 1.0 +vn 0.0 0.0 1.0 +vn 0.0 0.0 1.0 +vn 0.0 0.0 1.0 +vn 0.0 0.0 1.0 +vn 0.0 0.0 1.0 +vn 0.0 0.0 1.0 +vn 0.0 0.0 1.0 +vn 0.0 0.0 1.0 +vn 0.0 0.0 1.0 +vn 0.0 0.0 1.0 +vn 0.0 0.0 1.0 +vn -0.0 0.0 1.0 +vn 0.0 0.0 1.0 +vn 0.0 0.0 1.0 +vn 0.0 0.0 1.0 +vn 0.0 0.0 1.0 +vn 0.0 -0.0 1.0 +vn 0.0 0.0 1.0 +f 1//1 2//1 3//1 +f 1//2 3//2 4//2 +f 5//3 1//3 4//3 +f 5//4 4//4 6//4 +f 7//5 5//5 6//5 +f 7//6 6//6 8//6 +f 9//7 8//7 10//7 +f 9//8 7//8 8//8 +f 11//9 10//9 12//9 +f 11//10 9//10 10//10 +f 13//11 11//11 12//11 +f 13//12 12//12 14//12 +f 15//13 13//13 14//13 +f 15//14 14//14 16//14 +f 17//15 16//15 18//15 +f 17//16 15//16 16//16 +f 19//17 18//17 20//17 +f 19//18 17//18 18//18 +f 21//19 19//19 20//19 +f 21//20 20//20 22//20 +f 23//21 21//21 22//21 +f 23//22 22//22 24//22 +f 25//23 24//23 26//23 +f 25//24 23//24 24//24 +f 27//25 26//25 28//25 +f 27//26 25//26 26//26 +f 29//27 27//27 28//27 +f 29//28 28//28 30//28 +f 31//29 30//29 32//29 +f 31//30 29//30 30//30 +f 33//31 32//31 34//31 +f 33//32 31//32 32//32 +f 35//33 33//33 34//33 +f 35//34 34//34 36//34 +f 37//35 36//35 38//35 +f 37//36 35//36 36//36 +f 39//37 38//37 40//37 +f 39//38 37//38 38//38 +f 41//39 39//39 40//39 +f 41//40 40//40 42//40 +f 43//41 42//41 44//41 +f 43//42 41//42 42//42 +f 45//43 44//43 46//43 +f 45//44 43//44 44//44 +f 47//45 45//45 46//45 +f 47//46 46//46 48//46 +f 49//47 47//47 48//47 +f 49//48 48//48 50//48 +f 51//49 49//49 50//49 +f 51//50 50//50 52//50 +f 53//51 51//51 52//51 +f 53//52 52//52 54//52 +f 55//53 53//53 54//53 +f 55//54 54//54 56//54 +f 57//55 56//55 58//55 +f 57//56 55//56 56//56 +f 59//57 58//57 60//57 +f 59//58 57//58 58//58 +f 61//59 60//59 62//59 +f 61//60 59//60 60//60 +f 63//61 61//61 62//61 +f 63//62 62//62 64//62 +f 65//63 63//63 64//63 +f 65//64 64//64 66//64 +f 67//65 66//65 68//65 +f 67//66 65//66 66//66 +f 69//67 68//67 70//67 +f 69//68 67//68 68//68 +f 71//69 69//69 70//69 +f 71//70 70//70 72//70 +f 73//71 71//71 72//71 +f 73//72 72//72 74//72 +f 75//73 74//73 76//73 +f 75//74 73//74 74//74 +f 77//75 76//75 78//75 +f 77//76 75//76 76//76 +f 79//77 77//77 78//77 +f 79//78 78//78 80//78 +f 81//79 80//79 82//79 +f 81//80 79//80 80//80 +f 83//81 82//81 84//81 +f 83//82 81//82 82//82 +f 85//83 83//83 84//83 +f 85//84 84//84 86//84 +f 87//85 86//85 88//85 +f 87//86 85//86 86//86 +f 89//87 88//87 90//87 +f 89//88 87//88 88//88 +f 91//89 89//89 90//89 +f 91//90 90//90 92//90 +f 93//91 91//91 92//91 +f 93//92 92//92 94//92 +f 95//93 94//93 96//93 +f 95//94 93//94 94//94 +f 97//95 96//95 98//95 +f 97//96 95//96 96//96 +f 99//97 97//97 98//97 +f 99//98 98//98 100//98 +f 101//99 99//99 100//99 +f 101//100 100//100 102//100 +f 103//101 101//101 102//101 +f 103//102 102//102 104//102 +f 105//103 103//103 104//103 +f 105//104 104//104 106//104 +f 107//105 106//105 108//105 +f 107//106 105//106 106//106 +f 109//107 108//107 110//107 +f 109//108 107//108 108//108 +f 111//109 110//109 112//109 +f 111//110 109//110 110//110 +f 113//111 112//111 114//111 +f 113//112 111//112 112//112 +f 115//113 114//113 116//113 +f 115//114 113//114 114//114 +f 117//115 115//115 116//115 +f 117//116 116//116 118//116 +f 119//117 117//117 118//117 +f 119//118 118//118 120//118 +f 121//119 120//119 122//119 +f 121//120 119//120 120//120 +f 123//121 122//121 124//121 +f 123//122 121//122 122//122 +f 125//123 124//123 126//123 +f 125//124 123//124 124//124 +f 127//125 126//125 128//125 +f 127//126 125//126 126//126 +f 2//127 128//127 3//127 +f 2//128 127//128 128//128 +f 9//129 11//129 13//129 +f 21//130 17//130 19//130 +f 27//131 21//131 23//131 +f 27//132 23//132 25//132 +f 65//133 61//133 63//133 +f 53//134 55//134 57//134 +f 53//135 57//135 59//135 +f 71//136 67//136 69//136 +f 31//137 27//137 29//137 +f 31//138 21//138 27//138 +f 47//139 1//139 5//139 +f 47//140 5//140 7//140 +f 33//141 17//141 21//141 +f 33//142 21//142 31//142 +f 35//143 15//143 17//143 +f 35//144 17//144 33//144 +f 43//145 45//145 47//145 +f 43//146 47//146 7//146 +f 41//147 7//147 9//147 +f 41//148 43//148 7//148 +f 41//149 9//149 13//149 +f 37//150 13//150 15//150 +f 37//151 15//151 35//151 +f 39//152 41//152 13//152 +f 39//153 13//153 37//153 +f 77//154 73//154 75//154 +f 49//155 1//155 47//155 +f 2//156 1//156 49//156 +f 81//157 77//157 79//157 +f 119//158 121//158 123//158 +f 119//159 123//159 125//159 +f 119//160 125//160 127//160 +f 83//161 77//161 81//161 +f 83//162 67//162 71//162 +f 83//163 71//163 73//163 +f 83//164 73//164 77//164 +f 85//165 61//165 65//165 +f 85//166 65//166 67//166 +f 85//167 67//167 83//167 +f 117//168 2//168 49//168 +f 117//169 119//169 127//169 +f 117//170 127//170 2//170 +f 95//171 101//171 53//171 +f 95//172 97//172 99//172 +f 95//173 99//173 101//173 +f 93//174 53//174 59//174 +f 93//175 59//175 61//175 +f 93//176 95//176 53//176 +f 87//177 61//177 85//177 +f 91//178 93//178 61//178 +f 91//179 61//179 87//179 +f 89//180 91//180 87//180 +f 115//181 49//181 51//181 +f 115//182 117//182 49//182 +f 115//183 51//183 103//183 +f 105//184 113//184 115//184 +f 105//185 115//185 103//185 +f 111//186 113//186 105//186 +f 107//187 111//187 105//187 +f 109//188 111//188 107//188 +f 51//189 53//189 101//189 +f 101//190 103//190 51//190 +f 12//191 10//191 14//191 +f 18//192 22//192 20//192 +f 22//193 28//193 24//193 +f 24//194 28//194 26//194 +f 62//195 66//195 64//195 +f 56//196 54//196 58//196 +f 58//197 54//197 60//197 +f 68//198 72//198 70//198 +f 28//199 32//199 30//199 +f 22//200 32//200 28//200 +f 4//201 48//201 6//201 +f 6//202 48//202 8//202 +f 18//203 34//203 22//203 +f 22//204 34//204 32//204 +f 16//205 36//205 18//205 +f 18//206 36//206 34//206 +f 46//207 44//207 48//207 +f 48//208 44//208 8//208 +f 8//209 42//209 10//209 +f 44//210 42//210 8//210 +f 10//211 42//211 14//211 +f 14//212 38//212 16//212 +f 16//213 38//213 36//213 +f 42//214 40//214 14//214 +f 14//215 40//215 38//215 +f 74//216 78//216 76//216 +f 4//217 50//217 48//217 +f 4//218 3//218 50//218 +f 78//219 82//219 80//219 +f 122//220 120//220 124//220 +f 124//221 120//221 126//221 +f 126//222 120//222 128//222 +f 78//223 84//223 82//223 +f 68//224 84//224 72//224 +f 72//225 84//225 74//225 +f 74//226 84//226 78//226 +f 62//227 86//227 66//227 +f 66//228 86//228 68//228 +f 68//229 86//229 84//229 +f 3//230 118//230 50//230 +f 120//231 118//231 128//231 +f 128//232 118//232 3//232 +f 102//233 96//233 54//233 +f 98//234 96//234 100//234 +f 100//235 96//235 102//235 +f 54//236 94//236 60//236 +f 60//237 94//237 62//237 +f 96//238 94//238 54//238 +f 62//239 88//239 86//239 +f 94//240 92//240 62//240 +f 62//241 92//241 88//241 +f 92//242 90//242 88//242 +f 50//243 116//243 52//243 +f 118//244 116//244 50//244 +f 52//245 116//245 104//245 +f 114//246 106//246 116//246 +f 116//247 106//247 104//247 +f 114//248 112//248 106//248 +f 112//249 108//249 106//249 +f 112//250 110//250 108//250 +f 54//251 52//251 102//251 +f 104//252 102//252 52//252 diff --git a/asset/icons/icon_sound.svg b/asset/icons/icon_sound.svg new file mode 100644 index 0000000..6827310 --- /dev/null +++ b/asset/icons/icon_sound.svg @@ -0,0 +1,58 @@ + + + + + + image/svg+xml + + + + + + + + + + + diff --git a/asset/sounds/book_close.ogg b/asset/sounds/book_close.ogg new file mode 100644 index 0000000..c520928 Binary files /dev/null and b/asset/sounds/book_close.ogg differ diff --git a/asset/sounds/book_flip.ogg b/asset/sounds/book_flip.ogg new file mode 100644 index 0000000..f229a27 Binary files /dev/null and b/asset/sounds/book_flip.ogg differ diff --git a/asset/sounds/book_open.ogg b/asset/sounds/book_open.ogg new file mode 100644 index 0000000..acdd272 Binary files /dev/null and b/asset/sounds/book_open.ogg differ diff --git a/codetower-23.blend b/codetower-23.blend index a351d1c..957cdb1 100644 Binary files a/codetower-23.blend and b/codetower-23.blend differ diff --git a/ct.py b/ct.py index f2ef1e9..5196e0f 100644 --- a/ct.py +++ b/ct.py @@ -69,28 +69,16 @@ color_text_red = (0.799, 0.031, 0.038, 1) color_text_orange = (0.799, 0.176, 0.054, 1) color_text_yellow = (0.799, 0.617, 0.021, 1) -color_cmd = (0.8, 0.8, 0.8, 1) # Blanc -color_cmd_hl = (0.8, 0.619, 0.021, 1) # Jaune -# color_link = (0.024, 0.006, 0.8, 1) # Bleu -# color_link_hl = (0.8, 0.005, 0.315, 1) # Majenta - -color_link = (0.799, 0.617, 0.021, 1) # Jaune -# color_link = (0.021, 0.257, 0.267, 1) # Vert fonçé -color_link_hl = (0.8, 0.8, 0.8, 1) # Blanc - -color_doc_chap = (0.153, 0.116, 0.105, 1) # WoodDark -color_doc_fct = (0.326, 0.101, 0.0592, 1) # BrownDark -# color_doc_fct = (0.577, 0.233, 0.115, 1) # Brown -# color_doc_hl = (0.799, 0.617, 0.021, 1) # Yellow -color_doc_hl = (0.13, 0.254, 0.407, 1) # BlueDark -color_doc_activate = (1.0, 0.025, 0.116, 1) # Red - # Sounds audiodev = aud.Device() snd_click = aud.Sound('asset/sounds/click.ogg') sndbuff_click = aud.Sound.cache(snd_click) snd_construct = aud.Sound('asset/sounds/click_construct.ogg') sndbuff_construct = aud.Sound.cache(snd_construct) +snd_book_open = aud.Sound('asset/sounds/book_open.ogg') +sndbuff_book_open = aud.Sound.cache(snd_book_open) +snd_book_close = aud.Sound('asset/sounds/book_close.ogg') +sndbuff_book_close = aud.Sound.cache(snd_book_close) # UPBGE constants JUST_ACTIVATED = bge.logic.KX_INPUT_JUST_ACTIVATED @@ -107,7 +95,7 @@ def cmd_tower_construct(cont): obj = cont.owner obj_Hl= scene.objects[obj.name+"-Hl"] if cont.sensors['Click'].status == JUST_ACTIVATED and cont.sensors['MO'].positive and scene.objects['Terrain']['manip_mode']==0: - audiodev.play(sndbuff_construct) + sound_play (sndbuff_construct) if scene.objects['Terrain']['construct_mode']==True: scene.objects['Terrain']['construct_mode']=False obj.worldScale=[1, 1, 1] @@ -126,6 +114,7 @@ def cmd_tower_construct(cont): scene.objects['Tower_construc_mode'].setVisible(True,False) scene.objects['Tower_construc_mode'].color = color_cmd text_info ("Tower position : ") + scene.objects['Cmd_text']['Text']= "" ############################################################################### # User interface : texte info et compteurs @@ -246,6 +235,7 @@ def scn_terrain_mo (cont): scene.objects['Tower_construc_mode'].worldPosition.y=round(hitPosition.y) scene.objects['Tower_construc_mode'].worldPosition.z=0.2 text_info ("Tower position : "+str(round(hitPosition.x))+","+str(round(hitPosition.y))) + scene.objects['Cmd_text']['Text']= "" # Affiche les informations sur la tour # FIXME : High-light sur la tower sélectionnée @@ -268,6 +258,7 @@ def terrain_init (cont): # Cacher la bannière de fin scene.objects['End'].setVisible(False,True) scene.objects['End']['timer']=0 + scene.objects['Doc'].setVisible(False,True) # Pile des draws scene.objects['Terrain']['draw_process']=False @@ -301,7 +292,7 @@ def terrain_init (cont): # Mise en route et pause du cycle def terrain_run (): - audiodev.play(sndbuff_click) + sound_play (sndbuff_click) # Pause if scene.objects['Terrain']['run'] == True: @@ -363,7 +354,7 @@ def terrain_run (): # Arrêt et réinitialisation du cycle def terrain_stop (): - audiodev.play(sndbuff_click) + sound_play (sndbuff_click) # Arrêt des threads utilisateurs scene.objects['Terrain']['run']=False @@ -404,9 +395,10 @@ def terrain_end (): # Affichage des résultats if scene.objects['End']['timer']== 0: scene.objects['Terrain']['manip_mode']=9 # Fenêtre modale - scene.objects['Camera'].worldPosition.x = scene.objects['Camera']['init_lx'] - scene.objects['Camera'].worldPosition.y = scene.objects['Camera']['init_ly'] - scene.objects['Camera'].worldPosition.z = scene.objects['Camera']['init_lz'] + manip_reset() + # scene.objects['Camera'].worldPosition.x = scene.objects['Camera']['init_lx'] + # scene.objects['Camera'].worldPosition.y = scene.objects['Camera']['init_ly'] + # scene.objects['Camera'].worldPosition.z = scene.objects['Camera']['init_lz'] # Wave if scene.objects['Points']['wave']== scene.objects['Terrain']['nb_waves'] and scene.objects['Points']['lifes'] > 0: @@ -447,7 +439,7 @@ def terrain_end (): # Vitesse du jeu def terrain_speed (obj): - audiodev.play(sndbuff_click) + sound_play (sndbuff_click) speed_mode=[0.25, 0.5, 1,2,4,10] speed_mode_txt=["1/4", "1/2", "1", "2","4","10"] i=speed_mode.index(scene.objects['Terrain']['speed']) @@ -480,7 +472,7 @@ def terrain_speed (obj): with open("ct_config.xml", "wb") as f: f.write(buffer_xml) -# Page de fin +# Highlight de la page de fin def endbanner_hl(cont): if cont.sensors['MO'].status == JUST_ACTIVATED: if scene.objects['Mouse_main']['mouse_graphic']: @@ -497,26 +489,74 @@ def endbanner_hl(cont): scene.objects['Endbanner_points'].color = color_black scene.objects['Endbanner_ok'].color = color_black -def endbanner_close(cont): +# Fermer la page de fin +def endbanner_close(): + print("endbanner_close") + sound_play (sndbuff_click) + scene.objects['Terrain']['manip_mode']=0 + scene.objects['End'].setVisible(False,True) + scene.objects['End'].worldPosition = [20, 1.53623, -0.892838] # Position dans Blender [20, 1.53623, -0.892838] + scene.objects['Endbanner'].color = [0.592, 0.68, 0.407, 1] + scene.objects['Endbanner_wave'].color = color_black + scene.objects['Endbanner_points'].color = color_black + scene.objects['End']['timer']= 0 + +# Click pour fermer la page de fin +def endbanner_close_click(cont): if cont.sensors['Click'].status == JUST_ACTIVATED and cont.sensors['MO'].positive : - audiodev.play(sndbuff_click) - scene.objects['Terrain']['manip_mode']=0 - scene.objects['End'].setVisible(False,True) - scene.objects['End'].worldPosition = [20, 1.53623, -0.892838] # Position dans Blender [20, 1.53623, -0.892838] - scene.objects['Endbanner'].color = [0.592, 0.68, 0.407, 1] - scene.objects['Endbanner_wave'].color = color_black - scene.objects['Endbanner_points'].color = color_black - scene.objects['End']['timer']= 0 + endbanner_close() + +############################################################################### +# Sons +############################################################################### + +def sound_play (sound): + if scene.objects['Commands']['sound']: + audiodev.play(sound) + +def sound_set (): + scene.objects['NoSound-cmd'].suspendPhysics() + scene.objects['NoSound-cmd'].setVisible(False,False) + scene.objects['NoSound-cmd-Hl'].setVisible(False,False) + scene.objects['Sound-cmd']. restorePhysics() + scene.objects['Sound-cmd-Hl'].setVisible(True,False) + scene.objects['Commands']['sound']=True + scene.objects['Cmd_text']['Text']= "Unset sound" + scene.objects['Cmd_text'].setVisible(True,False) + + # Maj du fichier de config (sound : data/config/sound -> [0][1].text) + ct_config_tree[0][1].text=str(scene.objects['Commands']['sound']) + buffer_xml = ET.tostring(ct_config_tree) + with open("ct_config.xml", "wb") as f: + f.write(buffer_xml) + +def sound_unset (): + scene.objects['Sound-cmd'].suspendPhysics() + scene.objects['Sound-cmd'].setVisible(False,False) + scene.objects['Sound-cmd-Hl'].setVisible(False,False) + scene.objects['NoSound-cmd']. restorePhysics() + scene.objects['NoSound-cmd-Hl'].setVisible(True,False) + scene.objects['Commands']['sound']=False + scene.objects['Cmd_text']['Text']= "Set sound" + scene.objects['Cmd_text'].setVisible(True,False) + + # Maj du fichier de config (sound : data/config/sound -> [0][1].text) + ct_config_tree[0][1].text=str(scene.objects['Commands']['sound']) + buffer_xml = ET.tostring(ct_config_tree) + with open("ct_config.xml", "wb") as f: + f.write(buffer_xml) ############################################################################### # Commandes ############################################################################### +color_cmd = (0.8, 0.8, 0.8, 1) # Blanc +color_cmd_hl = (0.8, 0.619, 0.021, 1) # Jaune + # Init def cmd_init(): - # scene.objects['Terrain']['run']=False - # UI : Commandes + # UI : Commands scene.objects['Run-Hl'].setVisible(False,False) scene.objects['Pause'].setVisible(False,False) scene.objects['Pause'].suspendPhysics() @@ -529,7 +569,15 @@ def cmd_init(): scene.objects['About-cmd-Hl'].setVisible(False,False) scene.objects['About'].setVisible(False,True) - # UI : Texte, ... + # UI : Sounds + # Read config (sound : data/config/sound -> [0][1].text) + if ct_config_tree[0][1].text == "True": + sound_set () + else: + sound_unset () + audiodev.unlock() + + # UI : Text, ... scene.objects['Cmd_text'].setVisible(False,False) scene.objects['Map_text'].setVisible(False,False) scene.objects['Text_info-1'].setVisible(False,False) @@ -551,23 +599,21 @@ def cmd_init(): scene.objects['Mouse_main'].setVisible(False,False) bge.render.showMouse(True) - # scene.objects['Raz-vue-Hl'].setVisible(False,False) - # scene.objects['Aide-cmd-Hl'].setVisible(False,False) - - # Récupérer la config (vitesse du jeu : data/config/speed) + # Speed + # Read config (game speed : data/config/speed -> [0][0].text) speed_mode=[0.25, 0.5, 1,2,4,10] speed_mode_txt=["1/4", "1/2", "1", "2","4","10"] scene.objects['Terrain']['speed']=float(ct_config_tree[0][0].text) i=speed_mode.index(scene.objects['Terrain']['speed']) scene.objects['Text_speed']['Text']=speed_mode_txt[i] -# Le highlight des commandes +# Highlight des commandes def cmd_hl(cont): obj = cont.owner # Activation if cont.sensors['MO'].status == JUST_ACTIVATED and scene.objects['Terrain']['manip_mode']==0: - if obj.name!="Run" and obj.name!="Pause" and obj.name!="Run-Hl" and obj.name!="Pause-Hl" and obj.name!="Stop" and obj.name!="Stop-Hl" : + if obj.name!="Run" and obj.name!="Pause" and obj.name!="Stop" : obj.setVisible(False,True) scene.objects[obj.name+'-Hl'].setVisible(True,True) @@ -594,44 +640,55 @@ def cmd_hl(cont): "Book-cmd": "Documentation", "About-cmd": "About", "Speed_down": "Speed down (-)", - "Speed_up": "Speed up (+)"} - scene.objects['Cmd_text']['Text']= text_hl[obj.name] + "Speed_up": "Speed up (+)", + "Sound-cmd": "Unset sound", + "NoSound-cmd": "Set sound"} + text=text_hl[obj.name] + if obj.name == "Construc" and scene.objects['Terrain']['construct_mode']==True: # Bascule le construct + text="Hide tower position" + scene.objects['Cmd_text']['Text']= text scene.objects['Cmd_text'].setVisible(True,False) - - # if scene.objects['Terrain']['run'] == False and obj.name=="Run": - # scene.objects['Cmd_text']['Text']= "Run" - # if scene.objects['Terrain']['run'] == True and obj.name=="Stop": - # scene.objects['Cmd_text']['Text']= "Stop" - # if scene.objects['Terrain']['run'] == True and obj.name=="Pause": - # scene.objects['Cmd_text']['Text']= "Pause" # Désactivation if cont.sensors['MO'].status == JUST_RELEASED and (scene.objects['Terrain']['manip_mode']==0 or scene.objects['Terrain']['manip_mode']==9): - scene.objects['Cmd_text'].setVisible(False,False) - if obj.name!="Run" and obj.name!="Pause" and obj.name!="Run-Hl" and obj.name!="Pause-Hl" and obj.name!="Stop" and obj.name!="Stop-Hl" : + if obj.name!="Run" and obj.name!="Pause" and obj.name!="Stop" and obj.name!="Sound-cmd" and obj.name!="NoSound-cmd": scene.objects[obj.name+'-Hl'].setVisible(False,True) obj.setVisible(True,True) + scene.objects['Cmd_text'].setVisible(False,False) # Run et pause if obj.name=="Pause" or obj.name=="Run": if scene.objects['Terrain']['run'] == True: scene.objects['Pause-Hl'].setVisible(False,False) scene.objects['Pause'].setVisible(True,False) + scene.objects['Cmd_text'].setVisible(False,False) else: scene.objects['Run-Hl'].setVisible(False,False) scene.objects['Run'].setVisible(True,False) + scene.objects['Cmd_text'].setVisible(False,False) # Stop if obj.name=="Stop": if scene.objects['Terrain']['thread_run']==True: scene.objects['Stop-Hl'].setVisible(False,False) scene.objects['Stop'].setVisible(True,False) + scene.objects['Cmd_text'].setVisible(False,False) + + # Sound + if obj.name=="NoSound-cmd" and scene.objects['Commands']['sound']==False: + scene.objects['NoSound-cmd-Hl'].setVisible(False,False) + scene.objects['NoSound-cmd'].setVisible(True,False) + scene.objects['Cmd_text'].setVisible(False,False) + if obj.name=="Sound-cmd" and scene.objects['Commands']['sound']==True: + scene.objects['Sound-cmd-Hl'].setVisible(False,False) + scene.objects['Sound-cmd'].setVisible(True,False) + scene.objects['Cmd_text'].setVisible(False,False) # Click sur les commandes def cmd_click (cont): obj = cont.owner if cont.sensors['Click'].status == JUST_ACTIVATED and cont.sensors['MO'].positive and scene.objects['Terrain']['manip_mode']==0: - if obj.name=="Pause" or obj.name=="Run": # FIXME problème sur l'icone pause + if obj.name=="Pause" or obj.name=="Run": terrain_run () if obj.name=="Stop": terrain_stop () @@ -639,6 +696,10 @@ def cmd_click (cont): terrain_speed (obj) if obj.name=="About-cmd": about_open () + if obj.name=="Sound-cmd": + sound_unset () + if obj.name=="NoSound-cmd": + sound_set () ############################################################################### # Gestion du clavier @@ -656,10 +717,27 @@ def mode(cont): # Touche ESC if JUST_ACTIVATED in keyboard.inputs[bge.events.ESCKEY].queue: - terrain_stop () - bge.logic.endGame() + print("ESC") + print(scene.objects['Terrain']['manip_mode']) + # Fenêtres modales + if scene.objects['Terrain']['manip_mode']==9: + print("['manip_mode']==9") + if scene.objects['Book'].visible: + print("Book") + doc_close() + if scene.objects['About'].visible: + print("About") + about_close() + if scene.objects['End'].visible: + print("End") + endbanner_close() + return + else: # Sortir du jeux + print("endgame") + terrain_stop () + bge.logic.endGame() - # Fenêtre modale + # Fenêtre modale (inhibition des touches hors ESC) if scene.objects['Terrain']['manip_mode']==9: return @@ -687,10 +765,7 @@ def mode(cont): # Touche Home -> Reset de la vue if JUST_ACTIVATED in keyboard.inputs[bge.events.HOMEKEY].queue: - scene.objects['Camera'].worldPosition.x = scene.objects['Camera']['init_lx'] - scene.objects['Camera'].worldPosition.y = scene.objects['Camera']['init_ly'] - scene.objects['Camera'].worldPosition.z = scene.objects['Camera']['init_lz'] - applyRotationTo(scene.objects['Terrain'], 0, 0, 0) + manip_reset() if scene.objects['Mouse_main']['mouse_graphic']: bge.render.setMousePosition(int(bge.render.getWindowWidth() / 2), int(bge.render.getWindowHeight() / 2)) @@ -732,6 +807,12 @@ def manip_init(cont): scene.objects['Terrain']['init_rx']=scene.objects['Terrain'].worldOrientation.to_euler().x scene.objects['Terrain']['init_ry']=scene.objects['Terrain'].worldOrientation.to_euler().y scene.objects['Terrain']['init_rz']=scene.objects['Terrain'].worldOrientation.to_euler().z + scene.objects['Commands']['init_lx']=scene.objects['Commands'].worldPosition.x + scene.objects['Commands']['init_ly']=scene.objects['Commands'].worldPosition.y + scene.objects['Commands']['init_lz']=scene.objects['Commands'].worldPosition.z + scene.objects['Points']['init_lx']=scene.objects['Points'].worldPosition.x + scene.objects['Points']['init_ly']=scene.objects['Points'].worldPosition.y + scene.objects['Points']['init_lz']=scene.objects['Points'].worldPosition.z # Atteindre une orientation (bas niveau) def applyRotationTo(obj, rx=None, ry=None, rz=None, Local=True): @@ -765,12 +846,19 @@ def applyRotationTo(obj, rx=None, ry=None, rz=None, Local=True): # print ("delta z ",rz-obj.worldOrientation.to_euler().z) # Reset de la manipulation de la vue -def manip_reset(cont): - if cont.sensors['Click'].status == JUST_ACTIVATED and cont.sensors['MO'].positive and scene.objects['Terrain']['manip_mode']==0: - scene.objects['Camera'].worldPosition.x = scene.objects['Camera']['init_lx'] - scene.objects['Camera'].worldPosition.y = scene.objects['Camera']['init_ly'] - scene.objects['Camera'].worldPosition.z = scene.objects['Camera']['init_lz'] - applyRotationTo(scene.objects['Terrain'], 0, 0, 0) +def manip_reset(): + # if cont.sensors['Click'].status == JUST_ACTIVATED and cont.sensors['MO'].positive and scene.objects['Terrain']['manip_mode']==0: + scene.objects['Camera'].worldPosition.x = scene.objects['Camera']['init_lx'] + scene.objects['Camera'].worldPosition.y = scene.objects['Camera']['init_ly'] + scene.objects['Camera'].worldPosition.z = scene.objects['Camera']['init_lz'] + scene.objects['Commands'].worldPosition.x = scene.objects['Commands']['init_lx'] + scene.objects['Commands'].worldPosition.y = scene.objects['Commands']['init_ly'] + scene.objects['Commands'].worldPosition.z = scene.objects['Commands']['init_lz'] + scene.objects['Points'].worldPosition.x = scene.objects['Points']['init_lx'] + scene.objects['Points'].worldPosition.y = scene.objects['Points']['init_ly'] + scene.objects['Points'].worldPosition.z = scene.objects['Points']['init_lz'] + applyRotationTo(scene.objects['Terrain'], 0, 0, 0) + scene.objects['Cmd_text']['Text']= "" # Position de départ pour la manipulation de la vue def manip_start(cont): @@ -796,6 +884,9 @@ def manip(cont): # Pan if obj['manip_mode']==1: # Shift scene.objects['Camera'].applyMovement((delta_x*-sensibilite_pan, delta_y*sensibilite_pan, 0), True) + scene.objects['Commands'].applyMovement((delta_x*-sensibilite_pan, delta_y*sensibilite_pan*math.cos(50*2*math.pi*(1/360)), delta_y*sensibilite_pan*math.sin(50*2*math.pi*(1/360))), True) + scene.objects['Points'].applyMovement((delta_x*-sensibilite_pan, delta_y*sensibilite_pan*math.cos(50*2*math.pi*(1/360)), delta_y*sensibilite_pan*math.sin(50*2*math.pi*(1/360))), True) + if scene.objects['Mouse_main']['mouse_graphic']: scene.objects['Mouse_main'].applyMovement((delta_x*-sensibilite_pan, delta_y*sensibilite_pan, 0), True) @@ -816,7 +907,6 @@ def manip(cont): scene.objects['Camera']['past_ly']=scene.objects['Camera'].worldPosition.y scene.objects['Camera']['past_lz']=scene.objects['Camera'].worldPosition.z - # Manipulation du modèle ou de la caméra def manip_wheel(cont): if scene.objects['Terrain']['manip_mode']!=9: # Fenêtre modale @@ -921,9 +1011,17 @@ def mouse_down(): # Documentation ############################################################################### +color_doc_chap = (0.153, 0.116, 0.105, 1) # WoodDark +color_doc_fct = (0.326, 0.101, 0.0592, 1) # BrownDark +color_doc_hl = (0.13, 0.254, 0.407, 1) # BlueDark +color_doc_activate = (1.0, 0.025, 0.116, 1) # Red + +# Ouvrir le livre def doc (cont): if cont.sensors['Click'].status == JUST_ACTIVATED and cont.sensors['MO'].positive and scene.objects['Terrain']['manip_mode']==0: scene.objects['Terrain']['manip_mode']=9 # Fenêtre modale + sound_play (sndbuff_book_open) + manip_reset() scene.objects['Book'].worldPosition = [0, -22, 16.5] scene.objects['Book_close'].color = color_doc_chap scene.objects['Book_chap-screen'].color = color_doc_chap @@ -951,14 +1049,22 @@ def doc (cont): scene.objects['Book_page_screen'].worldPosition = scene.objects['Book'].worldPosition scene.objects['Book_page_screen'].setVisible(True,True) -def doc_close (cont): - if cont.sensors['Click'].status == JUST_ACTIVATED and cont.sensors['MO'].positive : - scene.objects['Terrain']['manip_mode']=0 # Fenêtre modale - scene.objects['Book_page_screen'].setVisible(False,True) - scene.objects['Book'].setVisible(False,True) - scene.objects['Book'].worldPosition = [28, 0.84549, 1.53626] # Position dans Blender [28, 0.84549, 1.53626] - scene.objects['Book_page_screen'].worldPosition = scene.objects['Book'].worldPosition +# Fermer le livre +def doc_close (): + print("doc_close") + sound_play (sndbuff_book_close) + scene.objects['Terrain']['manip_mode']=0 # Fenêtre modale + scene.objects['Book_page_screen'].setVisible(False,True) + scene.objects['Book'].setVisible(False,True) + scene.objects['Book'].worldPosition = [28, 0.84549, 1.53626] # Position dans Blender [28, 0.84549, 1.53626] + scene.objects['Book_page_screen'].worldPosition = scene.objects['Book'].worldPosition +# Click pour fermer le livre +def doc_close_click (cont): + if cont.sensors['Click'].status == JUST_ACTIVATED and cont.sensors['MO'].positive : + doc_close() + +# Highlight du livre def doc_hl (cont): if cont.sensors['MO'].status == JUST_ACTIVATED : obj = cont.owner @@ -983,8 +1089,13 @@ def doc_hl (cont): # About ############################################################################### +color_link = (0.799, 0.617, 0.021, 1) # Jaune +color_link_hl = (0.8, 0.8, 0.8, 1) # Blanc + +# Ouvrir le about def about_open(): scene.objects['Terrain']['manip_mode']=9 # Fenêtre modale + manip_reset() scene.objects['About_title'].color = color_black scene.objects['About_text'].color = color_black scene.objects['About_copyright'].color = color_black @@ -1000,6 +1111,7 @@ def about_open(): scene.objects['About']['timer'] = 0 scene.objects['About']['anim'] = True +# Animation du about def about_open_anim(): pas=0.5 scene.objects['About'].localPosition.y -= pas @@ -1010,6 +1122,7 @@ def about_open_anim(): if scene.objects['About']['timer']== 40: scene.objects['About']['anim'] = False +# Highlight du about def about_hl(cont): # decal = 18 # size_scale = 0.2 @@ -1044,15 +1157,22 @@ def about_hl(cont): # scene.objects['Mouse_main'].worldScale=[30, 30, 30] # print("about_hl R après", scene.objects['Mouse_main'].worldPosition) -def about_close(cont): - if cont.sensors['Click'].status == JUST_ACTIVATED and cont.sensors['MO'].positive : - audiodev.play(sndbuff_click) - scene.objects['Terrain']['manip_mode']=0 - scene.objects['About'].setVisible(False,True) - scene.objects['About'].worldPosition = [22, 1.53623, -0.892838] - scene.objects['Aboutbanner'].color = [0.592, 0.68, 0.407, 1] - scene.objects['About']['timer']= 0 +# Fermer le about +def about_close(): + print("about_close") + sound_play (sndbuff_click) + scene.objects['Terrain']['manip_mode']=0 + scene.objects['About'].setVisible(False,True) + scene.objects['About'].worldPosition = [22, 1.53623, -0.892838] + scene.objects['Aboutbanner'].color = [0.592, 0.68, 0.407, 1] + scene.objects['About']['timer']= 0 +# Click pour fermer le about +def about_close_click(cont): + if cont.sensors['Click'].status == JUST_ACTIVATED and cont.sensors['MO'].positive : + about_close() + +# Liens du about def about_link(cont): if cont.sensors['Click'].status == JUST_ACTIVATED and cont.sensors['MO'].positive : obj = cont.owner diff --git a/ct_config.xml b/ct_config.xml index c4cbdab..b8e1978 100644 --- a/ct_config.xml +++ b/ct_config.xml @@ -1,5 +1,6 @@ - 4.0 + 10.0 + False \ No newline at end of file diff --git a/ct_doc.py b/ct_doc.py index 3e5b93f..729cfea 100644 --- a/ct_doc.py +++ b/ct_doc.py @@ -1,4 +1,5 @@ import bge # Bibliothèque Blender Game Engine (UPBGE) +import aud # Sounds ############################################################################### # ct_doc.py @@ -24,30 +25,28 @@ color_doc_fct = (0.326, 0.101, 0.0592, 1) # BrownDark color_doc_hl = (0.13, 0.254, 0.407, 1) # BlueDark color_doc_activate = (1.0, 0.025, 0.116, 1) # Red +# Sounds +audiodev = aud.Device() +snd_book_flip = aud.Sound('asset/sounds/book_flip.ogg') +sndbuff_book_flip = aud.Sound.cache(snd_book_flip) + # UPBGE constants JUST_ACTIVATED = bge.logic.KX_INPUT_JUST_ACTIVATED JUST_RELEASED = bge.logic.KX_INPUT_JUST_RELEASED ACTIVATE = bge.logic.KX_INPUT_ACTIVE # JUST_DEACTIVATED = bge.logic.KX_SENSOR_JUST_DEACTIVATED -############################################################################### -# Screen -############################################################################### - ############################################################################### # Map ############################################################################### -# Get your level : ct_level () -# - Return your level (integer) -# -# Time management (temporization) : ct_sleep (delay) - map_fct=["ct_level", "ct_sleep"] +# ct_level () ct_level_title="Get your level" ct_level_text=" ct_level ()\n \v - Return your level (integer)" +# ct_sleep (delay) ct_sleep_title="Time management" ct_sleep_text=" ct_sleep (delay)\n \v - delay : duration in seconds (float)" @@ -60,15 +59,17 @@ map_fct_text=[ct_level_text, ct_sleep_text] tower_fct=["ct_build", "ct_remove"] +# ct_build (x, y, category, name, color, style) ct_build_title="Build a tower" ct_build_text="ct_build (x,y, category, name, color, style)\n \v- x position (integer)\n \v- y position (integer)\n" ct_build_text = ct_build_text +" \v- category (string) : \n \v \v- \"Archer tower\" (default value)\n \v \v- \"Mage tower\"\n" ct_build_text = ct_build_text +" \v- name (string)\n \v- color (RGB tuple, default=purple)\n" ct_build_text = ct_build_text +" \v- style (string) : \n \v \v- \"square\" (default value) or \"round\"\n \v \v- version : A (default value), B or C\n \v \v- exemple : 'round-B' \n" ct_build_text = ct_build_text +" \v- Return boolean flag (builded -> True)\n\n" -ct_build_text = ct_build_text +"Predefined color : blue, green, magenta,\n orange, purple, red, turquoise, yellow.\n\n" +ct_build_text = ct_build_text +"Predefined colors : blue, green, magenta,\n orange, purple, red, turquoise, yellow.\n\n" ct_build_text = ct_build_text +"Exemple : ct_build (1, 1, \"Archer tower\", \n \"Tower #1\", yellow, \"round-A\")\n" +# ct_remove (x, y) ct_remove_title="Remove a tower" ct_remove_text=" ct_remove (x, y) \n \v - x position (integer)\n \v - y position (integer)\n" @@ -116,9 +117,19 @@ fct_text = { 'Book_chap-tech' : tech_fct_text, 'Book_chap-spell' : spell_fct_text} +############################################################################### +# Interface +############################################################################### + +# Sounds +def sound_play (sound): + if scene.objects['Commands']['sound']: + audiodev.play(sound) + # Afficher le chapitre def chapter(cont): - if cont.sensors['Click'].status == JUST_ACTIVATED and cont.sensors['MO'].positive : + if cont.sensors['Click'].status == JUST_ACTIVATED and cont.sensors['MO'].positive and cont.sensors['Click'].positive: + sound_play (sndbuff_book_flip) obj = cont.owner name_chap=obj.name[:-7] @@ -139,6 +150,7 @@ def chapter(cont): name_fct = "Book_fct-"+str(i) scene.objects[name_fct].setVisible(False,False) scene.objects[name_fct].color = color_doc_fct + scene.objects["Book"]['page_fct'] = "" scene.objects['Book_text_title'].setVisible(False,True) scene.objects['Book_text'].setVisible(False,True) @@ -165,6 +177,7 @@ def chapter(cont): # Afficher les details de la fonction def function(cont): if cont.sensors['Click'].status == JUST_ACTIVATED and cont.sensors['MO'].positive : + sound_play (sndbuff_book_flip) obj = cont.owner # Highlight des fonctions @@ -179,10 +192,7 @@ def function(cont): # Afficher le texte de la fonction name_chap = scene.objects["Book"]['page_chap'] - print ('name_chap : ', name_chap) - print ('obj.name[9:11] : ', obj.name[9:11]) nb = int(obj.name[9:11])-1 - print ('nb : ', nb) scene.objects['Book_text_title']['Text'] = fct_title[name_chap][nb] scene.objects['Book_text']['Text'] = fct_text[name_chap][nb] scene.objects['Book_text_title'].setVisible(True,True) diff --git a/ct_lib.py b/ct_lib.py index 9e5e5a3..4c57abe 100644 --- a/ct_lib.py +++ b/ct_lib.py @@ -159,9 +159,16 @@ def thread_cmd_start(fct): def thread_cmd_stop(): thread_stop(threads_cmd, "commands") +############################################################################### +# Sounds +############################################################################### + +def sound_play (sound): + if scene.objects['Commands']['sound']: + audiodev.play(sound) ############################################################################### -# Vagues (minions) +# Waves (minions) ############################################################################### # Minion caracteristics : category (class), level, hp, speed, armor, bounty, lifes_damage @@ -267,7 +274,7 @@ def scn_minion_affect(cont): obj.actuators['Steering'].velocity = obj['speed_base']*scene.objects['Terrain']['speed'] ############################################################################### -# Tours +# Towers ############################################################################### # Tower caracteristics : category (class), damage, speed, range @@ -316,7 +323,7 @@ def ct_build_details(x,y, cat='Archer tower', tower_name="Tower", color=tower_pu tower_minion.worldScale=[0.25,0.25,0.25] # Sounds - audiodev.play(sndbuff_build) + sound_play(sndbuff_build) # Caracteristics tower_carac= scene.objects['Terrain']['tower_carac'] @@ -433,9 +440,9 @@ def scn_tower_near(cont): # Sounds if obj['cat']=="Archer tower": - audiodev.play(sndbuff_archer) + sound_play(sndbuff_archer) if obj['cat']=="Mage tower": - audiodev.play(sndbuff_mage) + sound_play(sndbuff_mage) # Ligne (drawLine) (vitesse rapide) # if scene.objects['Terrain']['speed']>=1: @@ -499,7 +506,7 @@ def scn_map_end_near(cont): sensor = obj.sensors['Near'] if sensor.positive : for obj_i in sensor.hitObjectList : - audiodev.play(sndbuff_life) + sound_play(sndbuff_life) if scene.objects['Points']['lifes']>0: scene.objects['Points']['lifes']= scene.objects['Points']['lifes']-obj_i['lifes_damage'] scene.objects['Points']['minions_run'] -=1 @@ -516,7 +523,7 @@ def scn_map_end_near(cont): # # print ("obj['idm_last'], obj_i ['id'] : ", obj['idm_last'], obj_i ['id']) # if obj['idm_last'] != obj_i ['id']: # obj['idm_last'] = obj_i ['id'] -# audiodev.play(sndbuff_life) +# sound_play(sndbuff_life) # if scene.objects['Points']['lifes']>0: # scene.objects['Points']['lifes']= scene.objects['Points']['lifes']-obj_i['lifes_damage'] # scene.objects['Points']['minions_run'] -=1