diff --git a/asset/icons/icon_about.FCStd b/asset/icons/icon_about.FCStd new file mode 100644 index 0000000..94d1424 Binary files /dev/null and b/asset/icons/icon_about.FCStd differ diff --git a/asset/icons/icon_about.obj b/asset/icons/icon_about.obj new file mode 100644 index 0000000..0418da8 --- /dev/null +++ b/asset/icons/icon_about.obj @@ -0,0 +1,1775 @@ +# FreeCAD v0.19 build24291 (Git) Arch module +# http://www.freecadweb.org +mtllib icon_about.mtl +o Body +usemtl color_cccccc +v 14.675442 -10.23889 0.0 +v 15.353917 -9.560415 0.0 +v 14.675442 -10.23889 3.0 +v 15.353917 -9.560415 3.0 +v 15.114833 -15.301475 0.0 +v 15.298289 -15.272027 0.0 +v 15.208899 -15.301311 0.0 +v 15.374218 -15.2165 0.0 +v 14.949222 -15.217236 0.0 +v 15.765799 -14.762954 0.0 +v 15.025341 -15.272499 0.0 +v 14.223362 -15.690453 0.0 +v 14.16604 -16.05475 0.0 +v 14.083766 -16.10952 0.0 +v 14.226051 -15.97622 0.0 +v 14.257287 -15.882449 0.0 +v 14.256357 -15.783618 0.0 +v 13.521331 -16.316172 0.0 +v 16.304241 -13.432289 0.0 +v 16.361555 -13.618646 0.0 +v 16.342106 -13.715549 0.0 +v 16.348459 -13.520681 0.0 +v 16.2337 -13.363063 0.0 +v 16.144489 -13.320516 0.0 +v 16.09053 -14.259377 0.0 +v 14.270746 -14.53876 0.0 +v 14.300143 -14.574265 0.0 +v 14.139029 -14.698969 0.0 +v 16.323135 -12.47264 0.0 +v 16.499805 -12.415101 0.0 +v 16.416037 -12.457893 0.0 +v 16.566206 -12.348472 0.0 +v 16.623133 -12.171602 0.0 +v 16.608707 -12.264556 0.0 +v 13.794 -14.915328 0.0 +v 12.935629 -16.442635 0.0 +v 12.161164 -16.429523 0.0 +v 12.338034 -16.486452 0.0 +v 12.24508 -16.472025 0.0 +v 12.094535 -16.363125 0.0 +v 15.292789 -13.076025 0.0 +v 12.051743 -16.279356 0.0 +v 12.036996 -16.186453 0.0 +v 16.579317 -11.574008 0.0 +v 15.363626 -12.47264 0.0 +v 15.409519 -12.47696 0.0 +v 15.383773 -12.679064 0.0 +v 13.855247 -13.472053 -0.0 +v 13.323159 -13.918528 -0.0 +v 13.970071 -14.81282 0.0 +v 11.18912 -16.007809 0.0 +v 11.146573 -16.097017 0.0 +v 11.077347 -16.167559 0.0 +v 11.830572 -15.247091 0.0 +v 12.036996 -15.226944 0.0 +v 12.032677 -15.272838 0.0 +v 14.202544 -12.870518 0.0 +v 15.344807 -12.87904 0.0 +v 10.794086 -16.205425 0.0 +v 10.988955 -16.211779 0.0 +v 10.89099 -16.224873 0.0 +v 12.670455 -14.156093 -0.0 +v 14.323159 -12.186477 0.0 +v 16.112902 -10.283585 0.0 +v 16.191433 -10.343596 0.0 +v 16.246201 -10.42587 0.0 +v 10.250258 -15.953848 0.0 +v 11.433611 -15.156107 0.0 +v 15.9203 -10.253279 0.0 +v 16.019131 -10.252349 0.0 +v 11.975863 -14.156093 -0.0 +v 11.630596 -15.208125 0.0 +v 15.827134 -10.286274 0.0 +v 16.452854 -10.988305 0.0 +v 15.052011 -10.715636 0.0 +v 14.202544 -11.502437 0.0 +v 9.746682 -15.629116 0.0 +v 11.323159 -13.918528 -0.0 +v 14.675442 -10.23889 0.0 +v 14.710948 -10.209493 0.0 +v 14.835651 -10.370607 0.0 +v 15.438156 -9.394803 0.0 +v 15.409182 -9.484295 0.0 +v 15.353917 -9.560415 0.0 +v 13.855247 -10.900902 0.0 +v 14.949503 -10.539565 0.0 +v 15.437994 -9.300737 0.0 +v 15.353182 -9.135418 0.0 +v 15.40871 -9.211347 0.0 +v 9.208324 -15.072216 0.0 +v 9.293136 -15.237535 0.0 +v 9.237609 -15.161608 0.0 +v 9.208161 -14.978151 0.0 +v 9.237137 -14.888659 0.0 +v 9.970876 -14.134064 0.0 +v 10.79107 -13.472053 -0.0 +v 9.2924 -14.812539 0.0 +v 9.810667 -14.002347 0.0 +v 9.93537 -14.163461 0.0 +v 13.323159 -10.454426 0.0 +v 14.899636 -8.743837 0.0 +v 9.696815 -13.833388 0.0 +v 9.594308 -13.657317 0.0 +v 10.443774 -12.870518 -0.0 +v 8.627187 -14.120605 0.0 +v 8.819183 -14.086679 0.0 +v 8.726018 -14.119675 0.0 +v 13.212707 -9.216846 0.0 +v 14.396059 -8.419106 0.0 +v 12.670455 -10.216862 0.0 +v 8.400117 -13.947084 0.0 +v 8.533417 -14.08937 0.0 +v 8.454885 -14.029358 0.0 +v 13.015722 -9.164829 0.0 +v 12.815745 -9.125863 0.0 +v 13.457197 -8.365146 0.0 +v 13.852231 -8.16753 0.0 +v 13.657364 -8.161176 0.0 +v 13.755328 -8.148081 0.0 +v 13.568971 -8.205395 0.0 +v 13.499744 -8.275937 0.0 +v 12.609323 -9.146009 0.0 +v 11.975863 -10.216862 0.0 +v 12.613642 -9.100117 0.0 +v 8.193463 -13.384648 0.0 +v 9.282692 -11.900313 0.0 +v 10.443774 -11.502437 -0.0 +v 10.323159 -12.186477 -0.0 +v 9.262545 -11.693891 0.0 +v 9.236798 -11.895994 0.0 +v 8.067001 -12.798946 0.0 +v 9.301511 -11.493914 0.0 +v 9.353529 -11.296929 0.0 +v 10.79107 -10.900902 0.0 +v 12.551784 -8.00983 0.0 +v 12.594575 -8.093598 0.0 +v 12.609323 -8.186501 0.0 +v 12.485154 -7.94343 0.0 +v 10.852319 -9.457625 0.0 +v 11.323159 -10.454426 0.0 +v 10.676248 -9.560133 0.0 +v 8.323183 -11.900313 0.0 +v 8.023185 -12.201351 0.0 +v 10.375572 -9.834194 0.0 +v 12.308285 -7.886503 0.0 +v 12.401237 -7.900928 0.0 +v 10.50729 -9.673985 0.0 +v 10.346175 -9.798689 0.0 +v 8.146512 -11.957852 0.0 +v 8.230281 -11.915061 0.0 +v 8.03761 -12.108398 0.0 +v 8.080112 -12.024482 0.0 +v 11.71069 -7.930319 0.0 +v 8.342076 -10.940665 0.0 +v 8.501828 -11.052439 0.0 +v 8.412619 -11.009892 0.0 +v 11.124988 -8.056782 0.0 +v 10.422956 -8.682502 0.0 +v 8.284762 -10.754308 0.0 +v 8.297858 -10.852272 0.0 +v 8.304212 -10.657405 0.0 +v 10.38903 -8.490504 0.0 +v 10.389961 -8.589335 0.0 +v 10.562551 -8.263434 0.0 +v 10.420266 -8.396734 0.0 +v 10.480278 -8.318203 0.0 +v 8.555788 -10.113577 0.0 +v 9.43742 -9.071642 0.0 +v 9.620977 -9.100454 0.0 +v 9.697097 -9.155719 0.0 +v 9.531486 -9.07148 0.0 +v 8.88052 -9.61 0.0 +v 9.2721 -9.156454 0.0 +v 9.348028 -9.100926 0.0 +v 15.409182 -9.484295 3.0 +v 15.353917 -9.560415 3.0 +v 15.438156 -9.394803 3.0 +v 15.437994 -9.300737 3.0 +v 15.40871 -9.211347 3.0 +v 15.353182 -9.135418 3.0 +v 14.675442 -10.23889 3.0 +v 14.710948 -10.209493 3.0 +v 15.114833 -15.301475 3.0 +v 15.208899 -15.301311 3.0 +v 15.298289 -15.272027 3.0 +v 15.374218 -15.2165 3.0 +v 15.025341 -15.272499 3.0 +v 14.949222 -15.217236 3.0 +v 15.765799 -14.762954 3.0 +v 14.256357 -15.783618 3.0 +v 14.226051 -15.97622 3.0 +v 14.257287 -15.882449 3.0 +v 14.223362 -15.690453 3.0 +v 14.083766 -16.10952 3.0 +v 14.16604 -16.05475 3.0 +v 16.348459 -13.520681 3.0 +v 16.342106 -13.715549 3.0 +v 16.361555 -13.618646 3.0 +v 13.521331 -16.316172 3.0 +v 16.144489 -13.320516 3.0 +v 16.09053 -14.259377 3.0 +v 16.304241 -13.432289 3.0 +v 16.2337 -13.363063 3.0 +v 14.270746 -14.53876 3.0 +v 14.139029 -14.698969 3.0 +v 14.300143 -14.574265 3.0 +v 16.623133 -12.171602 3.0 +v 16.323135 -12.47264 3.0 +v 16.416037 -12.457893 3.0 +v 16.499805 -12.415101 3.0 +v 16.566206 -12.348472 3.0 +v 16.608707 -12.264556 3.0 +v 13.794 -14.915328 3.0 +v 12.935629 -16.442635 3.0 +v 15.292789 -13.076025 3.0 +v 12.051743 -16.279356 3.0 +v 12.094535 -16.363125 3.0 +v 12.161164 -16.429523 3.0 +v 12.036996 -16.186453 3.0 +v 12.24508 -16.472025 3.0 +v 12.338034 -16.486452 3.0 +v 16.579317 -11.574008 3.0 +v 15.363626 -12.47264 3.0 +v 15.383773 -12.679064 3.0 +v 15.409519 -12.47696 3.0 +v 13.855247 -13.472053 3.0 +v 13.323159 -13.918528 3.0 +v 13.970071 -14.81282 3.0 +v 11.18912 -16.007809 3.0 +v 10.988955 -16.211779 3.0 +v 11.077347 -16.167559 3.0 +v 11.146573 -16.097017 3.0 +v 11.830572 -15.247091 3.0 +v 12.032677 -15.272838 3.0 +v 12.036996 -15.226944 3.0 +v 14.202544 -12.870518 3.0 +v 15.344807 -12.87904 3.0 +v 10.794086 -16.205425 3.0 +v 10.89099 -16.224873 3.0 +v 12.670455 -14.156093 3.0 +v 14.323159 -12.186477 3.0 +v 10.250258 -15.953848 3.0 +v 11.433611 -15.156107 3.0 +v 15.9203 -10.253279 3.0 +v 16.191433 -10.343596 3.0 +v 16.112902 -10.283585 3.0 +v 16.019131 -10.252349 3.0 +v 11.975863 -14.156093 3.0 +v 11.630596 -15.208125 3.0 +v 15.827134 -10.286274 3.0 +v 16.452854 -10.988305 3.0 +v 16.246201 -10.42587 3.0 +v 15.052011 -10.715636 3.0 +v 14.202544 -11.502437 3.0 +v 9.746682 -15.629116 3.0 +v 11.323159 -13.918528 3.0 +v 14.835651 -10.370607 3.0 +v 13.855247 -10.900902 3.0 +v 14.949503 -10.539565 3.0 +v 9.970876 -14.134064 3.0 +v 10.79107 -13.472053 3.0 +v 9.2924 -14.812539 3.0 +v 9.237137 -14.888659 3.0 +v 9.208161 -14.978151 3.0 +v 9.208324 -15.072216 3.0 +v 9.237609 -15.161608 3.0 +v 9.293136 -15.237535 3.0 +v 9.810667 -14.002347 3.0 +v 9.93537 -14.163461 3.0 +v 13.323159 -10.454426 3.0 +v 14.899636 -8.743837 3.0 +v 9.696815 -13.833388 3.0 +v 9.594308 -13.657317 3.0 +v 10.443774 -12.870518 3.0 +v 8.454885 -14.029358 3.0 +v 8.533417 -14.08937 3.0 +v 8.627187 -14.120605 3.0 +v 13.212707 -9.216846 3.0 +v 14.396059 -8.419106 3.0 +v 12.670455 -10.216862 3.0 +v 8.400117 -13.947084 3.0 +v 8.726018 -14.119675 3.0 +v 8.819183 -14.086679 3.0 +v 13.015722 -9.164829 3.0 +v 12.815745 -9.125863 3.0 +v 13.457197 -8.365146 3.0 +v 13.852231 -8.16753 3.0 +v 13.755328 -8.148081 3.0 +v 13.499744 -8.275937 3.0 +v 13.657364 -8.161176 3.0 +v 13.568971 -8.205395 3.0 +v 12.609323 -9.146009 3.0 +v 11.975863 -10.216862 3.0 +v 12.613642 -9.100117 3.0 +v 8.193463 -13.384648 3.0 +v 9.282692 -11.900313 3.0 +v 10.323159 -12.186477 3.0 +v 10.443774 -11.502437 3.0 +v 9.262545 -11.693891 3.0 +v 9.236798 -11.895994 3.0 +v 8.067001 -12.798946 3.0 +v 9.301511 -11.493914 3.0 +v 9.353529 -11.296929 3.0 +v 10.79107 -10.900902 3.0 +v 10.852319 -9.457625 3.0 +v 11.323159 -10.454426 3.0 +v 10.676248 -9.560133 3.0 +v 8.323183 -11.900313 3.0 +v 8.023185 -12.201351 3.0 +v 10.375572 -9.834194 3.0 +v 12.308285 -7.886503 3.0 +v 12.609323 -8.186501 3.0 +v 12.594575 -8.093598 3.0 +v 12.551784 -8.00983 3.0 +v 12.485154 -7.94343 3.0 +v 12.401237 -7.900928 3.0 +v 10.50729 -9.673985 3.0 +v 8.230281 -11.915061 3.0 +v 10.346175 -9.798689 3.0 +v 8.146512 -11.957852 3.0 +v 8.080112 -12.024482 3.0 +v 8.03761 -12.108398 3.0 +v 11.71069 -7.930319 3.0 +v 8.342076 -10.940665 3.0 +v 8.412619 -11.009892 3.0 +v 8.501828 -11.052439 3.0 +v 11.124988 -8.056782 3.0 +v 10.422956 -8.682502 3.0 +v 8.304212 -10.657405 3.0 +v 8.284762 -10.754308 3.0 +v 8.297858 -10.852272 3.0 +v 10.38903 -8.490504 3.0 +v 10.389961 -8.589335 3.0 +v 10.562551 -8.263434 3.0 +v 10.480278 -8.318203 3.0 +v 10.420266 -8.396734 3.0 +v 8.555788 -10.113577 3.0 +v 8.88052 -9.61 3.0 +v 9.348028 -9.100926 3.0 +v 9.620977 -9.100454 3.0 +v 9.531486 -9.07148 3.0 +v 9.43742 -9.071642 3.0 +v 9.2721 -9.156454 3.0 +v 9.697097 -9.155719 3.0 +v 9.262545 -11.693891 0.0 +v 9.262545 -11.693891 3.0 +v 9.236798 -11.895994 0.0 +v 9.236798 -11.895994 3.0 +v 8.501828 -11.052439 0.0 +v 8.501828 -11.052439 3.0 +v 9.2721 -9.156454 0.0 +v 8.88052 -9.61 0.0 +v 9.2721 -9.156454 3.0 +v 8.88052 -9.61 3.0 +v 8.304212 -10.657405 0.0 +v 8.304212 -10.657405 3.0 +v 10.375572 -9.834194 0.0 +v 10.375572 -9.834194 3.0 +v 9.746682 -15.629116 0.0 +v 9.746682 -15.629116 3.0 +v 10.250258 -15.953848 0.0 +v 10.250258 -15.953848 3.0 +v 10.794086 -16.205425 0.0 +v 10.794086 -16.205425 3.0 +v 11.18912 -16.007809 0.0 +v 11.18912 -16.007809 3.0 +v 11.630596 -15.208125 0.0 +v 11.630596 -15.208125 3.0 +v 12.032677 -15.272838 0.0 +v 12.032677 -15.272838 3.0 +v 12.308285 -7.886503 0.0 +v 12.308285 -7.886503 3.0 +v 14.083766 -16.10952 0.0 +v 14.083766 -16.10952 3.0 +v 13.212707 -9.216846 0.0 +v 13.015722 -9.164829 0.0 +v 13.212707 -9.216846 3.0 +v 13.015722 -9.164829 3.0 +v 12.815745 -9.125863 0.0 +v 12.815745 -9.125863 3.0 +v 12.613642 -9.100117 0.0 +v 12.613642 -9.100117 3.0 +v 13.457197 -8.365146 0.0 +v 13.457197 -8.365146 3.0 +v 15.353182 -9.135418 0.0 +v 14.899636 -8.743837 0.0 +v 15.353182 -9.135418 3.0 +v 14.899636 -8.743837 3.0 +v 14.396059 -8.419106 0.0 +v 14.396059 -8.419106 3.0 +v 13.852231 -8.16753 0.0 +v 13.852231 -8.16753 3.0 +v 14.270746 -14.53876 0.0 +v 14.270746 -14.53876 3.0 +v 15.374218 -15.2165 0.0 +v 15.374218 -15.2165 3.0 +v 16.342106 -13.715549 0.0 +v 16.342106 -13.715549 3.0 +v 16.144489 -13.320516 3.0 +v 16.144489 -13.320516 0.0 +v 15.292789 -13.076025 3.0 +v 15.292789 -13.076025 0.0 +v 15.383773 -12.679064 0.0 +v 15.383773 -12.679064 3.0 +v 15.409519 -12.47696 0.0 +v 15.409519 -12.47696 3.0 +v 16.246201 -10.42587 0.0 +v 16.246201 -10.42587 3.0 +v 16.323135 -12.47264 3.0 +v 16.323135 -12.47264 0.0 +vn 0.7071062922477722 -0.7071072459220886 0.0 +vn 0.7071062922477722 -0.7071072459220886 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 1.6556079370133655e-33 -1.156807388557571e-33 -1.0 +vn 1.22361626835851e-31 -1.0060126332656458e-31 -1.0 +vn 2.510308388087793e-31 9.597861415954068e-32 -1.0 +vn 8.169752741392895e-32 -1.403269773631687e-31 -1.0 +vn 9.034409357785719e-32 -1.3407220718727384e-31 -1.0 +vn 0.0 0.0 -1.0 +vn 0.0 0.0 -1.0 +vn -9.461585180368889e-32 3.4829932879694904e-31 -1.0 +vn -1.4562088670175793e-31 -1.4212195429813846e-32 -1.0 +vn -1.5266979735118132e-31 4.0314980538463706e-32 -1.0 +vn -1.527485319627994e-31 2.97637755715775e-32 -1.0 +vn 0.0 0.0 -1.0 +vn 0.0 0.0 -1.0 +vn 0.0 0.0 -1.0 +vn 2.5808766053518373e-31 -5.700879588776107e-32 -1.0 +vn 6.166397686094398e-32 -3.476838634647455e-31 -1.0 +vn -6.700549959821326e-32 -2.4362670552148093e-31 -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 -1.034779566117839e-31 -3.918555322350297e-31 -1.0 +vn -7.798498123814218e-32 -4.0022201923745925e-31 -1.0 +vn 1.6515589834561565e-31 -4.089041734928586e-31 -1.0 +vn 4.0603796561724865e-32 -4.1601473882098265e-31 -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 -4.510066195573903e-31 -7.998892286512174e-32 -1.0 +vn 1.8848515890011405e-31 6.853171561904124e-31 -1.0 +vn 0.0 0.0 -1.0 +vn -5.852307358796209e-32 -4.162319701770146e-31 -1.0 +vn 0.0 0.0 -1.0 +vn 0.0 0.0 -1.0 +vn -4.0427578203593096e-31 -1.3044173990453324e-31 -1.0 +vn -3.125301171562296e-31 -3.8013383170704806e-31 -1.0 +vn -3.8937566233276095e-31 -2.266922752947779e-31 -1.0 +vn -3.797362089879389e-31 -2.5588393776581017e-31 -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 -3.062798726335854e-31 -4.383438182521404e-31 -1.0 +vn -3.1630260766643653e-31 -3.7546053636591897e-31 -1.0 +vn 0.0 0.0 -1.0 +vn 0.0 -0.0 -1.0 +vn 0.0 0.0 -1.0 +vn -3.125301641760036e-31 -3.8013437243444944e-31 -1.0 +vn -3.163030073345158e-31 -3.754595724605513e-31 -1.0 +vn 0.0 0.0 -1.0 +vn -3.797370553438715e-31 -2.5588302088021653e-31 -1.0 +vn -4.042762522336713e-31 -1.3044137550128448e-31 -1.0 +vn -3.8937610902061426e-31 -2.2669248688376103e-31 -1.0 +vn 0.0 0.0 -1.0 +vn -3.062800372027945e-31 -4.383440533510106e-31 -1.0 +vn 0.0 0.0 -1.0 +vn -5.852238592376686e-32 -4.162319701770146e-31 -1.0 +vn 0.0 0.0 -1.0 +vn 0.0 0.0 -1.0 +vn 0.0 0.0 -1.0 +vn -1.034765225086759e-31 -3.918558613734479e-31 -1.0 +vn -7.798462271236518e-32 -4.002220662572333e-31 -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 4.060201568778337e-32 -4.160145037221125e-31 -1.0 +vn 1.6515593361044618e-31 -4.089040324335365e-31 -1.0 +vn 0.0 -0.0 -1.0 +vn 0.0 0.0 -1.0 +vn 0.0 0.0 -1.0 +vn -2.431203025551467e-31 2.7031023920605073e-31 -1.0 +vn -2.847381393186084e-31 1.1899131996283439e-31 -1.0 +vn -4.510067135969384e-31 -7.998895225248051e-32 -1.0 +vn 0.0 -0.0 -1.0 +vn -1.4562065160288776e-31 -1.4212897787688463e-32 -1.0 +vn 0.0 0.0 -1.0 +vn -1.5274836739359028e-31 2.976353459523558e-32 -1.0 +vn -1.526696327819722e-31 4.031587685290621e-32 -1.0 +vn -9.461588706851941e-32 3.4829921124751395e-31 -1.0 +vn 0.0 0.0 -1.0 +vn 0.0 0.0 -1.0 +vn 6.16639239636982e-32 -3.476835578362143e-31 -1.0 +vn 2.5808794265382793e-31 -5.700866070591072e-32 -1.0 +vn 8.169753916887246e-32 -1.403269773631687e-31 -1.0 +vn 0.0 0.0 -1.0 +vn 1.655609406381304e-33 -1.1568084905835249e-33 -1.0 +vn 2.5103046265058705e-31 9.597824387882017e-32 -1.0 +vn 0.0 0.0 -1.0 +vn 0.0 0.0 -1.0 +vn 9.034409945532894e-32 -1.3407224245210437e-31 -1.0 +vn 1.2236199123909975e-31 -1.0060091067825934e-31 -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.8092203140258789 -0.5875054001808167 0.0 +vn 0.8092203140258789 -0.5875054001808167 0.0 +vn 0.9513781666755676 -0.30802515149116516 0.0 +vn 0.9513781666755676 -0.30802515149116516 0.0 +vn 0.9999985098838806 0.0017235236009582877 0.0 +vn 0.9999985098838806 0.0017235236009582877 0.0 +vn 0.9503049254417419 0.31132060289382935 0.0 +vn 0.807181715965271 0.5903030037879944 0.0 +vn 0.9503049254417419 0.31132060289382935 0.0 +vn 0.807181715965271 0.5903030037879944 0.0 +vn -0.6377289891242981 0.770260751247406 0.0 +vn -0.6377289891242981 0.770260751247406 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 +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 1.0 -0.0 +vn 0.0 1.0 0.0 +vn -0.156780406832695 0.987633466720581 0.0 +vn -0.156780406832695 0.987633466720581 0.0 +vn -0.4549102783203125 0.8905373215675354 0.0 +vn -0.4549102783203125 0.8905373215675354 0.0 +vn -0.7083274126052856 0.7058840394020081 0.0 +vn -0.8921015858650208 0.45183470845222473 0.0 +vn -0.7083274126052856 0.7058840394020081 0.0 +vn -0.8921015858650208 0.45183470845222473 0.0 +vn -0.9881713390350342 0.1533537060022354 0.0 +vn -0.9881713390350342 0.1533537060022354 0.0 +vn -0.09369895607233047 -0.9956005215644836 0.0 +vn -0.09369895607233047 -0.9956005215644836 0.0 +vn -0.9973227381706238 -0.07312518358230591 0.0 +vn -0.9973227381706238 -0.07312518358230591 0.0 +vn -0.9774748682975769 -0.21105173230171204 0.0 +vn -0.9774748682975769 -0.21105173230171204 0.0 +vn -0.9386457800865173 -0.3448827564716339 0.0 +vn -0.9386457800865173 -0.3448827564716339 0.0 +vn -0.9668564796447754 0.25532037019729614 0.0 +vn -0.9668564796447754 0.25532037019729614 0.0 +vn -0.9815401434898376 0.19125641882419586 0.0 +vn -0.9815401434898376 0.19125641882419586 0.0 +vn -0.99198317527771 0.12637053430080414 0.0 +vn -0.99198317527771 0.12637053430080414 0.0 +vn -0.8324256539344788 -0.5541366934776306 -0.0 +vn -0.8324256539344788 -0.5541366934776306 0.0 +vn -0.607185423374176 -0.7945601940155029 -0.0 +vn -0.607185423374176 -0.7945601940155029 0.0 +vn -0.31603673100471497 -0.9487470388412476 -0.0 +vn -0.31603673100471497 -0.9487470388412476 0.0 +vn 0.009417521767318249 -0.9999555945396423 0.0 +vn 0.009417521767318249 -0.9999555945396423 0.0 +vn 0.333839476108551 -0.9426299929618835 0.0 +vn 0.333839476108551 -0.9426299929618835 0.0 +vn -0.27591821551322937 -0.961181104183197 0.0 +vn -0.27591821551322937 -0.961181104183197 0.0 +vn 0.48455384373664856 -0.8747614026069641 0.0 +vn 0.48455384373664856 -0.8747614026069641 0.0 +vn -0.9804468750953674 0.196784108877182 0.0 +vn -0.9804468750953674 0.196784108877182 0.0 +vn -0.9911828637123108 -0.13250121474266052 -0.0 +vn -0.9911828637123108 -0.13250121474266052 0.0 +vn -0.8943403363227844 -0.4473872780799866 -0.0 +vn -0.8943403363227844 -0.4473872780799866 0.0 +vn -0.7004175782203674 -0.7137333154678345 -0.0 +vn -0.7004175782203674 -0.7137333154678345 0.0 +vn -0.43048182129859924 -0.9025991559028625 -0.0 +vn -0.43048182129859924 -0.9025991559028625 0.0 +vn -0.8642070889472961 -0.5031362771987915 0.0 +vn -0.8642070889472961 -0.5031362771987915 0.0 +vn -0.8292934894561768 -0.5588133335113525 0.0 +vn -0.8292934894561768 -0.5588133335113525 0.0 +vn -0.7907944917678833 -0.6120817065238953 0.0 +vn -0.7907944917678833 -0.6120817065238953 0.0 +vn -0.7569202780723572 0.6535071730613708 0.0 +vn -0.7569202780723572 0.6535071730613708 0.0 +vn -0.8404157757759094 0.5419421792030334 0.0 +vn -0.8404157757759094 0.5419421792030334 0.0 +vn -0.9075914621353149 0.41985446214675903 0.0 +vn -0.9075914621353149 0.41985446214675903 0.0 +vn 0.6377391815185547 -0.7702523469924927 0.0 +vn 0.6377391815185547 -0.7702523469924927 0.0 +vn 0.5875101685523987 0.8092167377471924 0.0 +vn 0.5875101685523987 0.8092167377471924 0.0 +vn 0.30802515149116516 0.9513781666755676 0.0 +vn 0.30802515149116516 0.9513781666755676 0.0 +vn -0.0017235236009582877 0.9999985098838806 0.0 +vn -0.0017235236009582877 0.9999985098838806 0.0 +vn -0.3113175928592682 0.9503059387207031 0.0 +vn -0.5903078317642212 0.8071781396865845 0.0 +vn -0.3113175928592682 0.9503059387207031 0.0 +vn -0.5903078317642212 0.8071781396865845 0.0 +vn -0.7071068286895752 0.7071068286895752 0.0 +vn -0.7071068286895752 0.7071068286895752 0.0 +vn 0.7071068286895752 0.7071068286895752 -0.0 +vn 0.7071068286895752 0.7071068286895752 0.0 +vn -0.8092215061187744 0.5875035524368286 0.0 +vn -0.8092215061187744 0.5875035524368286 0.0 +vn -0.95137619972229 0.3080313503742218 0.0 +vn -0.95137619972229 0.3080313503742218 0.0 +vn -0.9999985098838806 -0.0017336795572191477 -0.0 +vn -0.9999985098838806 -0.0017336795572191477 0.0 +vn -0.9503059387207031 -0.3113175928592682 -0.0 +vn -0.9503059387207031 -0.3113175928592682 0.0 +vn -0.807183027267456 -0.5903012156486511 -0.0 +vn -0.807183027267456 -0.5903012156486511 0.0 +vn -0.7702523469924927 -0.6377391815185547 0.0 +vn -0.7702523469924927 -0.6377391815185547 0.0 +vn -0.6535063982009888 -0.7569209933280945 0.0 +vn -0.6535063982009888 -0.7569209933280945 0.0 +vn -0.5419428944587708 -0.8404152989387512 0.0 +vn -0.5419428944587708 -0.8404152989387512 0.0 +vn -0.4198557734489441 -0.9075908660888672 0.0 +vn -0.4198557734489441 -0.9075908660888672 0.0 +vn -0.5031362771987915 0.8642070889472961 0.0 +vn -0.5031362771987915 0.8642070889472961 0.0 +vn -0.5588154196739197 0.8292919993400574 0.0 +vn -0.5588154196739197 0.8292919993400574 0.0 +vn -0.6120823621749878 0.7907940149307251 0.0 +vn -0.6120823621749878 0.7907940149307251 0.0 +vn -0.19676367938518524 -0.9804509282112122 -0.0 +vn -0.19676367938518524 -0.9804509282112122 0.0 +vn 0.13248226046562195 -0.9911853671073914 0.0 +vn 0.13248226046562195 -0.9911853671073914 0.0 +vn 0.4474065601825714 -0.8943306803703308 0.0 +vn 0.4474065601825714 -0.8943306803703308 0.0 +vn 0.7137285470962524 -0.7004223465919495 0.0 +vn 0.9025974273681641 -0.4304855763912201 0.0 +vn 0.7137285470962524 -0.7004223465919495 0.0 +vn 0.9025974273681641 -0.4304855763912201 0.0 +vn -0.8747612237930298 -0.48455432057380676 0.0 +vn -0.8747612237930298 -0.48455432057380676 0.0 +vn 0.9611812233924866 -0.2759179472923279 0.0 +vn 0.9611812233924866 -0.2759179472923279 0.0 +vn -0.5541366934776306 0.8324256539344788 0.0 +vn -0.5541366934776306 0.8324256539344788 0.0 +vn -0.7945601940155029 0.607185423374176 0.0 +vn -0.7945601940155029 0.607185423374176 0.0 +vn -0.9487470388412476 0.31603673100471497 0.0 +vn -0.9999555945396423 -0.009417521767318249 -0.0 +vn -0.9487470388412476 0.31603673100471497 0.0 +vn -0.9999555945396423 -0.009417521767318249 -0.0 +vn -0.9426310062408447 -0.3338364362716675 -0.0 +vn -0.9426310062408447 -0.3338364362716675 0.0 +vn -0.2553192377090454 -0.966856837272644 0.0 +vn -0.2553192377090454 -0.966856837272644 0.0 +vn -0.1912572830915451 -0.9815399646759033 0.0 +vn -0.1912572830915451 -0.9815399646759033 0.0 +vn -0.12636993825435638 -0.99198317527771 0.0 +vn -0.12636993825435638 -0.99198317527771 0.0 +vn -0.07312439382076263 0.9973228573799133 0.0 +vn -0.07312439382076263 0.9973228573799133 0.0 +vn -0.2110532522201538 0.977474570274353 0.0 +vn -0.2110532522201538 0.977474570274353 0.0 +vn -0.3448813557624817 0.9386462569236755 0.0 +vn -0.3448813557624817 0.9386462569236755 0.0 +vn 0.9956005215644836 -0.09369895607233047 0.0 +vn 0.9956005215644836 -0.09369895607233047 0.0 +vn 0.987633466720581 0.156780406832695 0.0 +vn 0.987633466720581 0.156780406832695 0.0 +vn 0.8905373215675354 0.4549102783203125 0.0 +vn 0.8905373215675354 0.4549102783203125 0.0 +vn 0.7058815360069275 0.708329975605011 0.0 +vn 0.7058815360069275 0.708329975605011 0.0 +vn 0.4518307149410248 0.8921036720275879 0.0 +vn 0.4518307149410248 0.8921036720275879 0.0 +vn 0.15335866808891296 0.9881705641746521 0.0 +vn 0.15335866808891296 0.9881705641746521 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.9876353740692139 -0.15676896274089813 -0.0 +vn -0.9876353740692139 -0.15676896274089813 0.0 +vn -0.8905332088470459 -0.4549182951450348 -0.0 +vn -0.8905332088470459 -0.4549182951450348 0.0 +vn -0.7058789730072021 -0.7083324790000916 -0.0 +vn -0.45183074474334717 -0.8921036124229431 -0.0 +vn -0.7058789730072021 -0.7083324790000916 0.0 +vn -0.45183074474334717 -0.8921036124229431 -0.0 +vn -0.15337197482585907 -0.9881685376167297 -0.0 +vn -0.15337197482585907 -0.9881685376167297 0.0 +vn -0.9956004619598389 0.09370089322328568 0.0 +vn -0.9956004619598389 0.09370089322328568 0.0 +vn 0.07312676310539246 -0.9973226189613342 0.0 +vn 0.07312676310539246 -0.9973226189613342 0.0 +vn 0.2110532522201538 -0.977474570274353 0.0 +vn 0.2110532522201538 -0.977474570274353 0.0 +vn 0.34488049149513245 -0.9386466145515442 0.0 +vn 0.34488049149513245 -0.9386466145515442 0.0 +vn 0.25531598925590515 0.9668576121330261 -0.0 +vn 0.25531598925590515 0.9668576121330261 0.0 +vn 0.19125641882419586 0.9815401434898376 0.0 +vn 0.19125641882419586 0.9815401434898376 -0.0 +vn 0.12637053430080414 0.99198317527771 0.0 +vn 0.12637053430080414 0.99198317527771 -0.0 +vn 0.5541388988494873 -0.8324241638183594 0.0 +vn 0.5541388988494873 -0.8324241638183594 0.0 +vn 0.7945613265037537 -0.6071839928627014 0.0 +vn 0.7945613265037537 -0.6071839928627014 0.0 +vn 0.9487479329109192 -0.31603381037712097 0.0 +vn 0.9999557733535767 0.009407875128090382 0.0 +vn 0.9487479329109192 -0.31603381037712097 0.0 +vn 0.9426299929618835 0.333839476108551 0.0 +vn 0.9999557733535767 0.009407875128090382 0.0 +vn 0.9426299929618835 0.333839476108551 0.0 +vn -0.961181104183197 0.27591821551322937 0.0 +vn -0.961181104183197 0.27591821551322937 0.0 +vn 0.8747614026069641 0.48455384373664856 -0.0 +vn 0.8747614026069641 0.48455384373664856 0.0 +vn 0.196784108877182 0.9804468750953674 0.0 +vn 0.196784108877182 0.9804468750953674 0.0 +vn -0.13249173760414124 0.9911840558052063 0.0 +vn -0.13249173760414124 0.9911840558052063 0.0 +vn -0.447394996881485 0.894336462020874 0.0 +vn -0.447394996881485 0.894336462020874 0.0 +vn -0.7137333154678345 0.7004175782203674 0.0 +vn -0.9025974273681641 0.4304855763912201 0.0 +vn -0.7137333154678345 0.7004175782203674 0.0 +vn -0.9025974273681641 0.4304855763912201 0.0 +vn 0.5031362771987915 -0.8642070889472961 0.0 +vn 0.5031362771987915 -0.8642070889472961 0.0 +vn 0.5588154196739197 -0.8292919993400574 0.0 +vn 0.5588154196739197 -0.8292919993400574 0.0 +vn 0.6120794415473938 -0.7907962799072266 0.0 +vn 0.6120794415473938 -0.7907962799072266 0.0 +vn 0.6535071730613708 0.7569202780723572 -0.0 +vn 0.6535071730613708 0.7569202780723572 0.0 +vn 0.5419410467147827 0.8404164910316467 0.0 +vn 0.5419410467147827 0.8404164910316467 -0.0 +vn 0.41985446214675903 0.9075914621353149 0.0 +vn 0.41985446214675903 0.9075914621353149 -0.0 +vn 0.7702523469924927 0.6377391815185547 0.0 +vn 0.7702523469924927 0.6377391815185547 -0.0 +vn -0.7071068286895752 -0.7071068286895752 0.0 +vn -0.7071068286895752 -0.7071068286895752 0.0 +vn -0.5875035524368286 -0.8092215061187744 -0.0 +vn -0.5875035524368286 -0.8092215061187744 0.0 +vn -0.30803436040878296 -0.9513753056526184 -0.0 +vn -0.30803436040878296 -0.9513753056526184 0.0 +vn 0.0017336619785055518 -0.9999985098838806 0.0 +vn 0.0017336619785055518 -0.9999985098838806 0.0 +vn 0.31132060289382935 -0.9503049254417419 0.0 +vn 0.31132060289382935 -0.9503049254417419 0.0 +vn 0.5902964472770691 -0.8071866035461426 0.0 +vn 0.5902964472770691 -0.8071866035461426 0.0 +vn 0.7569209933280945 -0.6535063982009888 0.0 +vn 0.7569209933280945 -0.6535063982009888 0.0 +vn 0.8404152989387512 -0.5419428944587708 0.0 +vn 0.8404152989387512 -0.5419428944587708 0.0 +vn 0.9075920581817627 -0.419853150844574 0.0 +vn 0.9075920581817627 -0.419853150844574 0.0 +vn 0.8642070889472961 0.5031362771987915 -0.0 +vn 0.8642070889472961 0.5031362771987915 0.0 +vn 0.8292919993400574 0.5588154196739197 0.0 +vn 0.8292919993400574 0.5588154196739197 -0.0 +vn 0.7907962799072266 0.6120794415473938 0.0 +vn 0.7907962799072266 0.6120794415473938 -0.0 +vn 0.9804472327232361 -0.19678224623203278 0.0 +vn 0.9804472327232361 -0.19678224623203278 0.0 +vn 0.9911828637123108 0.13250121474266052 0.0 +vn 0.9911828637123108 0.13250121474266052 0.0 +vn 0.8943384289741516 0.4473911225795746 0.0 +vn 0.8943384289741516 0.4473911225795746 0.0 +vn 0.7004223465919495 0.7137285470962524 0.0 +vn 0.4304780960083008 0.9026010036468506 0.0 +vn 0.7004223465919495 0.7137285470962524 0.0 +vn 0.4304780960083008 0.9026010036468506 0.0 +vn -0.48455432057380676 0.8747612237930298 0.0 +vn -0.48455432057380676 0.8747612237930298 0.0 +vn 0.27591851353645325 0.9611810445785522 0.0 +vn 0.27591851353645325 0.9611810445785522 0.0 +vn 0.8324301242828369 0.5541300177574158 0.0 +vn 0.8324301242828369 0.5541300177574158 0.0 +vn 0.607185423374176 0.7945601940155029 0.0 +vn 0.607185423374176 0.7945601940155029 0.0 +vn 0.31603381037712097 0.9487479329109192 0.0 +vn 0.31603381037712097 0.9487479329109192 0.0 +vn -0.00940796546638012 0.9999557733535767 0.0 +vn -0.3338364362716675 0.9426310062408447 0.0 +vn -0.00940796546638012 0.9999557733535767 0.0 +vn -0.3338364362716675 0.9426310062408447 0.0 +vn 0.9668579697608948 -0.25531482696533203 0.0 +vn 0.9668579697608948 -0.25531482696533203 0.0 +vn 0.9815399646759033 -0.1912572830915451 0.0 +vn 0.9815399646759033 -0.1912572830915451 0.0 +vn 0.99198317527771 -0.12637053430080414 0.0 +vn 0.99198317527771 -0.12637053430080414 0.0 +vn 0.9973229169845581 0.07312371581792831 -0.0 +vn 0.9973229169845581 0.07312371581792831 0.0 +vn 0.9774746298789978 0.21105293929576874 0.0 +vn 0.9774746298789978 0.21105293929576874 -0.0 +vn 0.938645601272583 0.3448832929134369 0.0 +vn 0.938645601272583 0.3448832929134369 -0.0 +vn 0.09372138977050781 0.9955983757972717 0.0 +vn 0.09372138977050781 0.9955983757972717 -0.0 +vn 0.15677209198474884 -0.9876347780227661 0.0 +vn 0.4549182951450348 -0.8905332088470459 0.0 +vn 0.15677209198474884 -0.9876347780227661 0.0 +vn 0.7083223462104797 -0.7058891654014587 0.0 +vn 0.4549182951450348 -0.8905332088470459 0.0 +vn 0.7083223462104797 -0.7058891654014587 0.0 +vn 0.8921036124229431 -0.45183074474334717 0.0 +vn 0.8921036124229431 -0.45183074474334717 0.0 +vn 0.9881715178489685 -0.15335217118263245 0.0 +vn 0.9881715178489685 -0.15335217118263245 0.0 +vn 0.0 -1.0 0.0 +vn 0.0 -1.0 0.0 +vn -0.9848076701164246 -0.17364856600761414 -0.0 +vn -0.9848076701164246 -0.17364856600761414 0.0 +vn -0.8660251498222351 -0.5000004768371582 0.0 +vn -0.8660251498222351 -0.5000004768371582 -0.0 +vn -0.6427884101867676 -0.7660438418388367 0.0 +vn -0.6427884101867676 -0.7660438418388367 -0.0 +vn -0.34201911091804504 -0.939693033695221 0.0 +vn -0.34201911091804504 -0.939693033695221 -0.0 +vn -0.0 -1.0 0.0 +vn -0.0 -1.0 -0.0 +vn 0.34201952815055847 -0.9396928548812866 0.0 +vn 0.34201952815055847 -0.9396928548812866 0.0 +vn 0.6427876353263855 -0.7660443186759949 0.0 +vn 0.6427876353263855 -0.7660443186759949 0.0 +vn 0.8660257458686829 -0.49999943375587463 0.0 +vn 0.8660257458686829 -0.49999943375587463 0.0 +vn 0.9848076701164246 -0.17364856600761414 0.0 +vn 0.9848076701164246 0.17364832758903503 -0.0 +vn 0.9848076701164246 -0.17364856600761414 0.0 +vn 0.9848076701164246 0.17364832758903503 0.0 +vn 0.8660257458686829 0.49999943375587463 0.0 +vn 0.8660257458686829 0.49999943375587463 0.0 +vn 0.6427868604660034 0.7660450339317322 0.0 +vn 0.34202075004577637 0.9396924376487732 -0.0 +vn 0.6427868604660034 0.7660450339317322 0.0 +vn 0.34202075004577637 0.9396924376487732 0.0 +vn 0.0 1.0 0.0 +vn -0.0 1.0 0.0 +vn -0.34202033281326294 0.9396926164627075 0.0 +vn -0.34202033281326294 0.9396926164627075 0.0 +vn -0.642787516117096 0.7660444378852844 0.0 +vn -0.642787516117096 0.7660444378852844 0.0 +vn -0.8660251498222351 0.5000004768371582 0.0 +vn -0.8660251498222351 0.5000004768371582 0.0 +vn -0.9848076701164246 0.17364832758903503 0.0 +vn -0.9848076701164246 0.17364832758903503 0.0 +f 1//1 2//1 3//1 +f 3//2 2//2 4//2 +f 5//3 6//3 7//3 +f 5//4 8//4 6//4 +f 9//5 8//5 5//5 +f 9//6 10//6 8//6 +f 9//7 5//7 11//7 +f 12//8 13//8 14//8 +f 12//9 15//9 13//9 +f 12//10 16//10 15//10 +f 12//11 17//11 16//11 +f 18//12 12//12 14//12 +f 19//13 20//13 21//13 +f 19//14 22//14 20//14 +f 23//15 19//15 21//15 +f 24//16 23//16 21//16 +f 24//17 21//17 25//17 +f 26//18 27//18 28//18 +f 29//19 30//19 31//19 +f 29//20 32//20 30//20 +f 33//21 32//21 29//21 +f 33//22 34//22 32//22 +f 35//23 18//23 36//23 +f 35//24 12//24 18//24 +f 37//25 38//25 39//25 +f 40//26 38//26 37//26 +f 41//27 24//27 25//27 +f 41//28 25//28 10//28 +f 42//29 38//29 40//29 +f 43//30 36//30 38//30 +f 43//31 38//31 42//31 +f 44//32 33//32 29//32 +f 45//33 46//33 47//33 +f 48//34 41//34 26//34 +f 49//35 26//35 28//35 +f 49//36 48//36 26//36 +f 49//37 50//37 35//37 +f 49//38 28//38 50//38 +f 51//39 52//39 53//39 +f 54//40 55//40 56//40 +f 57//41 41//41 48//41 +f 57//42 45//42 47//42 +f 57//43 58//43 41//43 +f 57//44 47//44 58//44 +f 59//45 60//45 61//45 +f 59//46 53//46 60//46 +f 59//47 51//47 53//47 +f 62//48 49//48 35//48 +f 62//49 35//49 55//49 +f 63//50 45//50 57//50 +f 64//51 65//51 66//51 +f 67//52 68//52 51//52 +f 67//53 51//53 59//53 +f 69//54 70//54 64//54 +f 69//55 64//55 66//55 +f 71//56 72//56 68//56 +f 71//57 54//57 72//57 +f 71//58 62//58 55//58 +f 71//59 55//59 54//59 +f 73//60 69//60 66//60 +f 73//61 66//61 74//61 +f 75//62 73//62 74//62 +f 75//63 74//63 44//63 +f 76//64 75//64 45//64 +f 76//65 45//65 63//65 +f 77//66 68//66 67//66 +f 78//67 71//67 68//67 +f 79//68 80//68 81//68 +f 82//69 83//69 84//69 +f 85//70 75//70 76//70 +f 85//71 79//71 81//71 +f 85//72 86//72 75//72 +f 85//73 81//73 86//73 +f 87//74 82//74 84//74 +f 88//75 87//75 84//75 +f 88//76 89//76 87//76 +f 90//77 91//77 92//77 +f 93//78 91//78 90//78 +f 94//79 91//79 93//79 +f 95//80 78//80 68//80 +f 95//81 96//81 78//81 +f 97//82 77//82 91//82 +f 97//83 91//83 94//83 +f 98//84 95//84 99//84 +f 98//85 96//85 95//85 +f 100//86 79//86 85//86 +f 101//87 88//87 84//87 +f 102//88 96//88 98//88 +f 103//89 104//89 96//89 +f 103//90 96//90 102//90 +f 105//91 106//91 107//91 +f 108//92 79//92 100//92 +f 108//93 109//93 101//93 +f 108//94 100//94 110//94 +f 111//95 112//95 113//95 +f 111//96 105//96 112//96 +f 111//97 106//97 105//97 +f 114//98 108//98 110//98 +f 115//99 114//99 110//99 +f 116//100 117//100 109//100 +f 116//101 109//101 108//101 +f 118//102 119//102 117//102 +f 120//103 117//103 116//103 +f 120//104 118//104 117//104 +f 120//105 116//105 121//105 +f 122//106 115//106 110//106 +f 122//107 110//107 123//107 +f 124//108 115//108 122//108 +f 125//109 103//109 106//109 +f 125//110 106//110 111//110 +f 126//111 127//111 128//111 +f 126//112 128//112 104//112 +f 126//113 104//113 103//113 +f 129//114 126//114 130//114 +f 129//115 127//115 126//115 +f 131//116 103//116 125//116 +f 132//117 127//117 129//117 +f 133//118 127//118 132//118 +f 133//119 134//119 127//119 +f 135//120 136//120 137//120 +f 138//121 135//121 137//121 +f 139//122 122//122 123//122 +f 139//123 123//123 140//123 +f 141//124 139//124 140//124 +f 142//125 131//125 143//125 +f 144//126 134//126 133//126 +f 144//127 140//127 134//127 +f 145//128 146//128 138//128 +f 145//129 138//129 137//129 +f 147//130 141//130 140//130 +f 147//131 140//131 144//131 +f 148//132 147//132 144//132 +f 149//133 150//133 142//133 +f 149//134 151//134 152//134 +f 149//135 143//135 151//135 +f 149//136 142//136 143//136 +f 153//137 145//137 137//137 +f 154//138 155//138 156//138 +f 157//139 153//139 139//139 +f 158//140 157//140 139//140 +f 159//141 154//141 160//141 +f 161//142 155//142 154//142 +f 161//143 154//143 159//143 +f 162//144 158//144 163//144 +f 164//145 157//145 158//145 +f 165//146 158//146 162//146 +f 165//147 164//147 158//147 +f 166//148 164//148 165//148 +f 167//149 133//149 155//149 +f 167//150 155//150 161//150 +f 168//151 169//151 170//151 +f 168//152 171//152 169//152 +f 172//153 133//153 167//153 +f 173//154 168//154 170//154 +f 173//155 170//155 172//155 +f 173//156 174//156 168//156 +f 142//157 126//157 131//157 +f 131//158 126//158 103//158 +f 170//159 144//159 172//159 +f 172//160 144//160 133//160 +f 137//161 122//161 153//161 +f 153//162 122//162 139//162 +f 84//163 79//163 101//163 +f 101//164 79//164 108//164 +f 29//165 45//165 44//165 +f 44//166 45//166 75//166 +f 9//167 26//167 10//167 +f 10//168 26//168 41//168 +f 43//169 55//169 36//169 +f 36//170 55//170 35//170 +f 97//171 95//171 77//171 +f 77//172 95//172 68//172 +f 175//173 84//173 83//173 +f 175//174 176//174 84//174 +f 177//175 83//175 82//175 +f 177//176 175//176 83//176 +f 178//177 82//177 87//177 +f 178//178 177//178 82//178 +f 179//179 87//179 89//179 +f 179//180 89//180 88//180 +f 179//181 178//181 87//181 +f 180//182 179//182 88//182 +f 80//183 79//183 181//183 +f 80//184 181//184 182//184 +f 183//185 184//185 185//185 +f 183//186 185//186 186//186 +f 187//187 183//187 186//187 +f 188//188 186//188 189//188 +f 188//189 187//189 186//189 +f 190//190 191//190 192//190 +f 193//191 194//191 195//191 +f 193//192 195//192 191//192 +f 193//193 191//193 190//193 +f 196//194 197//194 198//194 +f 199//195 194//195 193//195 +f 200//196 197//196 196//196 +f 200//197 201//197 197//197 +f 200//198 196//198 202//198 +f 200//199 202//199 203//199 +f 204//200 205//200 206//200 +f 207//201 208//201 209//201 +f 207//202 209//202 210//202 +f 207//203 210//203 211//203 +f 207//204 211//204 212//204 +f 213//205 214//205 199//205 +f 213//206 199//206 193//206 +f 215//207 189//207 201//207 +f 215//208 201//208 200//208 +f 216//209 217//209 218//209 +f 219//210 218//210 220//210 +f 219//211 220//211 221//211 +f 219//212 221//212 214//212 +f 219//213 216//213 218//213 +f 222//214 208//214 207//214 +f 223//215 224//215 225//215 +f 226//216 204//216 215//216 +f 227//217 205//217 204//217 +f 227//218 213//218 228//218 +f 227//219 228//219 205//219 +f 227//220 204//220 226//220 +f 229//221 230//221 231//221 +f 229//222 231//222 232//222 +f 233//223 234//223 235//223 +f 236//224 226//224 215//224 +f 236//225 224//225 223//225 +f 236//226 215//226 237//226 +f 236//227 237//227 224//227 +f 238//228 239//228 230//228 +f 238//229 230//229 229//229 +f 240//230 213//230 227//230 +f 240//231 235//231 213//231 +f 241//232 236//232 223//232 +f 242//233 229//233 243//233 +f 242//234 238//234 229//234 +f 244//235 245//235 246//235 +f 244//236 246//236 247//236 +f 248//237 243//237 249//237 +f 248//238 249//238 233//238 +f 248//239 233//239 235//239 +f 248//240 235//240 240//240 +f 250//241 245//241 244//241 +f 250//242 251//242 252//242 +f 250//243 252//243 245//243 +f 253//244 222//244 251//244 +f 253//245 251//245 250//245 +f 254//246 223//246 253//246 +f 254//247 241//247 223//247 +f 255//248 242//248 243//248 +f 256//249 243//249 248//249 +f 181//250 257//250 182//250 +f 258//251 257//251 181//251 +f 258//252 254//252 253//252 +f 258//253 253//253 259//253 +f 258//254 259//254 257//254 +f 179//255 175//255 177//255 +f 179//256 177//256 178//256 +f 180//257 175//257 179//257 +f 180//258 176//258 175//258 +f 260//259 243//259 256//259 +f 260//260 256//260 261//260 +f 262//261 263//261 264//261 +f 262//262 264//262 265//262 +f 262//263 265//263 266//263 +f 262//264 266//264 267//264 +f 262//265 267//265 255//265 +f 268//266 269//266 260//266 +f 268//267 260//267 261//267 +f 270//268 258//268 181//268 +f 271//269 176//269 180//269 +f 272//270 268//270 261//270 +f 273//271 261//271 274//271 +f 273//272 272//272 261//272 +f 275//273 276//273 277//273 +f 278//274 271//274 279//274 +f 278//275 270//275 181//275 +f 278//276 280//276 270//276 +f 281//277 277//277 282//277 +f 281//278 282//278 283//278 +f 281//279 275//279 277//279 +f 284//280 280//280 278//280 +f 285//281 280//281 284//281 +f 286//282 279//282 287//282 +f 286//283 287//283 288//283 +f 286//284 278//284 279//284 +f 289//285 286//285 288//285 +f 289//286 288//286 290//286 +f 291//287 289//287 290//287 +f 292//288 280//288 285//288 +f 292//289 293//289 280//289 +f 294//290 292//290 285//290 +f 295//291 283//291 273//291 +f 295//292 281//292 283//292 +f 296//293 297//293 298//293 +f 296//294 274//294 297//294 +f 296//295 273//295 274//295 +f 299//296 300//296 296//296 +f 299//297 296//297 298//297 +f 301//298 295//298 273//298 +f 302//299 299//299 298//299 +f 303//300 302//300 298//300 +f 303//301 298//301 304//301 +f 305//302 293//302 292//302 +f 305//303 306//303 293//303 +f 307//304 306//304 305//304 +f 308//305 309//305 301//305 +f 310//306 303//306 304//306 +f 310//307 304//307 306//307 +f 311//308 312//308 313//308 +f 311//309 313//309 314//309 +f 311//310 314//310 315//310 +f 311//311 315//311 316//311 +f 317//312 306//312 307//312 +f 317//313 310//313 306//313 +f 318//314 309//314 308//314 +f 319//315 310//315 317//315 +f 320//316 321//316 322//316 +f 320//317 322//317 309//317 +f 320//318 309//318 318//318 +f 323//319 312//319 311//319 +f 324//320 325//320 326//320 +f 327//321 305//321 323//321 +f 328//322 305//322 327//322 +f 329//323 330//323 331//323 +f 329//324 331//324 324//324 +f 329//325 324//325 326//325 +f 332//326 333//326 328//326 +f 334//327 328//327 327//327 +f 335//328 336//328 332//328 +f 335//329 328//329 334//329 +f 335//330 332//330 328//330 +f 337//331 326//331 303//331 +f 337//332 329//332 326//332 +f 338//333 337//333 303//333 +f 339//334 340//334 341//334 +f 339//335 341//335 342//335 +f 343//336 338//336 344//336 +f 343//337 340//337 339//337 +f 343//338 344//338 340//338 +f 296//339 308//339 301//339 +f 296//340 301//340 273//340 +f 260//341 262//341 255//341 +f 260//342 255//342 243//342 +f 235//343 219//343 214//343 +f 235//344 214//344 213//344 +f 204//345 188//345 189//345 +f 204//346 189//346 215//346 +f 223//347 208//347 222//347 +f 223//348 222//348 253//348 +f 181//349 176//349 271//349 +f 181//350 271//350 278//350 +f 292//351 312//351 323//351 +f 292//352 323//352 305//352 +f 310//353 344//353 338//353 +f 310//354 338//354 303//354 +f 126//355 142//355 296//355 +f 296//356 142//356 308//356 +f 318//357 142//357 150//357 +f 318//358 308//358 142//358 +f 320//359 150//359 149//359 +f 320//360 318//360 150//360 +f 321//361 149//361 152//361 +f 321//362 152//362 151//362 +f 321//363 320//363 149//363 +f 322//364 321//364 151//364 +f 309//365 151//365 143//365 +f 309//366 322//366 151//366 +f 130//367 126//367 296//367 +f 130//368 296//368 300//368 +f 143//369 131//369 309//369 +f 309//370 131//370 301//370 +f 301//371 125//371 295//371 +f 131//372 125//372 301//372 +f 295//373 111//373 281//373 +f 125//374 111//374 295//374 +f 133//375 132//375 303//375 +f 303//376 132//376 302//376 +f 302//377 345//377 346//377 +f 132//378 345//378 302//378 +f 346//379 347//379 348//379 +f 345//380 347//380 346//380 +f 275//381 111//381 113//381 +f 275//382 281//382 111//382 +f 276//383 113//383 112//383 +f 276//384 275//384 113//384 +f 277//385 112//385 105//385 +f 277//386 276//386 112//386 +f 282//387 105//387 107//387 +f 282//388 277//388 105//388 +f 283//389 107//389 106//389 +f 283//390 282//390 107//390 +f 349//391 133//391 350//391 +f 350//392 133//392 303//392 +f 106//393 103//393 283//393 +f 283//394 103//394 273//394 +f 330//395 161//395 159//395 +f 330//396 329//396 161//396 +f 331//397 159//397 160//397 +f 331//398 330//398 159//398 +f 324//399 160//399 154//399 +f 324//400 331//400 160//400 +f 325//401 154//401 156//401 +f 325//402 324//402 154//402 +f 326//403 156//403 155//403 +f 326//404 325//404 156//404 +f 103//405 102//405 273//405 +f 273//406 102//406 272//406 +f 272//407 98//407 268//407 +f 102//408 98//408 272//408 +f 268//409 99//409 269//409 +f 98//410 99//410 268//410 +f 351//411 352//411 353//411 +f 353//412 352//412 354//412 +f 354//413 167//413 337//413 +f 352//414 167//414 354//414 +f 337//415 355//415 356//415 +f 167//416 355//416 337//416 +f 99//417 95//417 260//417 +f 99//418 260//418 269//418 +f 340//419 170//419 169//419 +f 340//420 344//420 170//420 +f 341//421 169//421 171//421 +f 341//422 340//422 169//422 +f 342//423 171//423 168//423 +f 342//424 341//424 171//424 +f 339//425 168//425 174//425 +f 339//426 174//426 173//426 +f 339//427 342//427 168//427 +f 343//428 339//428 173//428 +f 95//429 97//429 260//429 +f 260//430 97//430 262//430 +f 357//431 170//431 358//431 +f 358//432 170//432 344//432 +f 263//433 97//433 94//433 +f 263//434 262//434 97//434 +f 264//435 94//435 93//435 +f 264//436 263//436 94//436 +f 265//437 93//437 90//437 +f 265//438 264//438 93//438 +f 266//439 90//439 92//439 +f 266//440 265//440 90//440 +f 267//441 92//441 91//441 +f 267//442 266//442 92//442 +f 148//443 144//443 310//443 +f 148//444 310//444 319//444 +f 91//445 359//445 267//445 +f 267//446 359//446 360//446 +f 360//447 361//447 362//447 +f 359//448 361//448 360//448 +f 362//449 363//449 364//449 +f 361//450 363//450 362//450 +f 139//451 141//451 305//451 +f 305//452 141//452 307//452 +f 307//453 147//453 317//453 +f 141//454 147//454 307//454 +f 317//455 148//455 319//455 +f 147//456 148//456 317//456 +f 239//457 59//457 61//457 +f 239//458 238//458 59//458 +f 230//459 61//459 60//459 +f 230//460 239//460 61//460 +f 231//461 60//461 53//461 +f 231//462 230//462 60//462 +f 232//463 53//463 52//463 +f 232//464 52//464 51//464 +f 232//465 231//465 53//465 +f 229//466 232//466 51//466 +f 158//467 139//467 328//467 +f 328//468 139//468 305//468 +f 365//469 68//469 366//469 +f 366//470 68//470 243//470 +f 335//471 164//471 166//471 +f 335//472 334//472 164//472 +f 336//473 166//473 165//473 +f 336//474 335//474 166//474 +f 332//475 165//475 162//475 +f 332//476 162//476 163//476 +f 332//477 336//477 165//477 +f 333//478 332//478 163//478 +f 328//479 163//479 158//479 +f 328//480 333//480 163//480 +f 68//481 367//481 243//481 +f 243//482 367//482 368//482 +f 368//483 54//483 233//483 +f 367//484 54//484 368//484 +f 233//485 369//485 370//485 +f 54//486 369//486 233//486 +f 371//487 153//487 372//487 +f 372//488 153//488 323//488 +f 323//489 157//489 327//489 +f 153//490 157//490 323//490 +f 327//491 164//491 334//491 +f 157//492 164//492 327//492 +f 56//493 55//493 235//493 +f 56//494 235//494 234//494 +f 313//495 137//495 136//495 +f 313//496 312//496 137//496 +f 314//497 136//497 135//497 +f 314//498 313//498 136//498 +f 315//499 135//499 138//499 +f 315//500 314//500 135//500 +f 316//501 138//501 146//501 +f 316//502 315//502 138//502 +f 311//503 146//503 145//503 +f 311//504 316//504 146//504 +f 55//505 43//505 235//505 +f 235//506 43//506 219//506 +f 122//507 137//507 292//507 +f 292//508 137//508 312//508 +f 216//509 43//509 42//509 +f 216//510 219//510 43//510 +f 217//511 42//511 40//511 +f 217//512 216//512 42//512 +f 218//513 40//513 37//513 +f 218//514 37//514 39//514 +f 218//515 217//515 40//515 +f 220//516 218//516 39//516 +f 221//517 39//517 38//517 +f 221//518 220//518 39//518 +f 124//519 122//519 292//519 +f 124//520 292//520 294//520 +f 38//521 36//521 221//521 +f 221//522 36//522 214//522 +f 214//523 18//523 199//523 +f 36//524 18//524 214//524 +f 199//525 373//525 374//525 +f 18//526 373//526 199//526 +f 375//527 376//527 377//527 +f 377//528 376//528 378//528 +f 378//529 379//529 380//529 +f 376//530 379//530 378//530 +f 380//531 381//531 382//531 +f 379//532 381//532 380//532 +f 195//533 14//533 13//533 +f 195//534 194//534 14//534 +f 191//535 13//535 15//535 +f 191//536 195//536 13//536 +f 192//537 15//537 16//537 +f 192//538 16//538 17//538 +f 192//539 191//539 15//539 +f 190//540 17//540 12//540 +f 190//541 192//541 17//541 +f 193//542 190//542 12//542 +f 383//543 375//543 384//543 +f 384//544 375//544 377//544 +f 12//545 35//545 193//545 +f 193//546 35//546 213//546 +f 288//547 117//547 119//547 +f 288//548 287//548 117//548 +f 290//549 119//549 118//549 +f 290//550 288//550 119//550 +f 291//551 118//551 120//551 +f 291//552 290//552 118//552 +f 289//553 120//553 121//553 +f 289//554 121//554 116//554 +f 289//555 291//555 120//555 +f 286//556 289//556 116//556 +f 35//557 50//557 213//557 +f 213//558 50//558 228//558 +f 228//559 28//559 205//559 +f 50//560 28//560 228//560 +f 205//561 27//561 206//561 +f 28//562 27//562 205//562 +f 385//563 386//563 387//563 +f 387//564 386//564 388//564 +f 388//565 389//565 390//565 +f 386//566 389//566 388//566 +f 390//567 391//567 392//567 +f 389//568 391//568 390//568 +f 27//569 26//569 204//569 +f 27//570 204//570 206//570 +f 393//571 9//571 394//571 +f 394//572 9//572 188//572 +f 187//573 9//573 11//573 +f 187//574 188//574 9//574 +f 183//575 11//575 5//575 +f 183//576 187//576 11//576 +f 184//577 5//577 7//577 +f 184//578 183//578 5//578 +f 185//579 7//579 6//579 +f 185//580 184//580 7//580 +f 186//581 6//581 8//581 +f 186//582 185//582 6//582 +f 395//583 10//583 396//583 +f 396//584 10//584 189//584 +f 189//585 25//585 201//585 +f 10//586 25//586 189//586 +f 201//587 397//587 398//587 +f 25//588 397//588 201//588 +f 75//589 86//589 253//589 +f 253//590 86//590 259//590 +f 259//591 81//591 257//591 +f 86//592 81//592 259//592 +f 257//593 80//593 182//593 +f 81//594 80//594 257//594 +f 198//595 21//595 20//595 +f 198//596 197//596 21//596 +f 196//597 20//597 22//597 +f 196//598 198//598 20//598 +f 202//599 22//599 19//599 +f 202//600 196//600 22//600 +f 203//601 19//601 23//601 +f 203//602 23//602 24//602 +f 203//603 202//603 19//603 +f 200//604 203//604 24//604 +f 73//605 75//605 250//605 +f 250//606 75//606 253//606 +f 399//607 400//607 401//607 +f 400//608 402//608 401//608 +f 245//609 66//609 65//609 +f 245//610 252//610 66//610 +f 246//611 65//611 64//611 +f 246//612 245//612 65//612 +f 247//613 64//613 70//613 +f 247//614 246//614 64//614 +f 244//615 70//615 69//615 +f 244//616 69//616 73//616 +f 244//617 247//617 70//617 +f 250//618 244//618 73//618 +f 402//619 58//619 401//619 +f 401//620 58//620 237//620 +f 237//621 403//621 404//621 +f 58//622 403//622 237//622 +f 404//623 405//623 406//623 +f 403//624 405//624 404//624 +f 33//625 44//625 207//625 +f 207//626 44//626 222//626 +f 222//627 74//627 251//627 +f 44//628 74//628 222//628 +f 251//629 407//629 408//629 +f 74//630 407//630 251//630 +f 46//631 45//631 223//631 +f 46//632 223//632 225//632 +f 208//633 29//633 31//633 +f 209//634 31//634 30//634 +f 209//635 208//635 31//635 +f 210//636 30//636 32//636 +f 210//637 209//637 30//637 +f 211//638 210//638 32//638 +f 212//639 32//639 34//639 +f 212//640 211//640 32//640 +f 207//641 34//641 33//641 +f 207//642 212//642 34//642 +f 223//643 45//643 409//643 +f 45//644 410//644 409//644 +f 241//645 254//645 63//645 +f 63//646 254//646 76//646 +f 76//647 258//647 85//647 +f 254//648 258//648 76//648 +f 85//649 270//649 100//649 +f 258//650 270//650 85//650 +f 100//651 280//651 110//651 +f 270//652 280//652 100//652 +f 110//653 293//653 123//653 +f 280//654 293//654 110//654 +f 123//655 306//655 140//655 +f 293//656 306//656 123//656 +f 140//657 304//657 134//657 +f 306//658 304//658 140//658 +f 134//659 298//659 127//659 +f 304//660 298//660 134//660 +f 127//661 297//661 128//661 +f 128//662 297//662 104//662 +f 298//663 297//663 127//663 +f 297//664 274//664 104//664 +f 104//665 261//665 96//665 +f 274//666 261//666 104//666 +f 96//667 256//667 78//667 +f 78//668 256//668 71//668 +f 261//669 256//669 96//669 +f 256//670 248//670 71//670 +f 71//671 240//671 62//671 +f 248//672 240//672 71//672 +f 240//673 227//673 62//673 +f 62//674 227//674 49//674 +f 227//675 226//675 49//675 +f 49//676 226//676 48//676 +f 48//677 226//677 57//677 +f 226//678 236//678 57//678 +f 236//679 241//679 57//679 +f 57//680 241//680 63//680 diff --git a/asset/icons/icon_about.svg b/asset/icons/icon_about.svg new file mode 100644 index 0000000..68e9d73 --- /dev/null +++ b/asset/icons/icon_about.svg @@ -0,0 +1,62 @@ + + + + + + + + + + image/svg+xml + + + + + + + + + diff --git a/asset/map/map1-landscape.blend b/asset/map/map1-landscape.blend index b6a1761..289d26b 100644 Binary files a/asset/map/map1-landscape.blend and b/asset/map/map1-landscape.blend differ diff --git a/codetower-19.blend b/codetower-19.blend new file mode 100644 index 0000000..46cd767 Binary files /dev/null and b/codetower-19.blend differ diff --git a/ct.py b/ct.py index 1bf8a0d..d218830 100644 --- a/ct.py +++ b/ct.py @@ -1,4 +1,5 @@ import importlib +# import imp import bge # Blender Game Engine (UPBGE) import bpy # Blender import aud # Sounds @@ -10,6 +11,9 @@ import webbrowser import threading # Multithreading import xml.etree.ElementTree as ET # Creating/parsing XML file +import ct_map1 as ct_map # waves script +# import ct_cmd # user script (commands) + ############################################################################### # ct.py # @title: the CodeTower game @@ -30,14 +34,15 @@ import xml.etree.ElementTree as ET # Creating/parsing XML file ############################################################################### # Dynamic import user file -sys.setrecursionlimit(10**5) # Limite sur la récursivité (valeur par défaut : 1000) -> segfault de Blender +sys.setrecursionlimit(10**6) # Limite sur la récursivité (valeur par défaut : 1000) -> segfault de Blender importlib.invalidate_caches() -ct_map = importlib.import_module('ct_map1') # waves script -ct_cmd = importlib.import_module('ct_cmd') # user script (commands) +# ct_map = importlib.import_module('ct_map1') # Waves script +ct_cmd = importlib.import_module('ct_cmd') # User script (commands) # UPBGE scene scene = bge.logic.getCurrentScene() eevee = bpy.context.scene.eevee +fps_time=0.0 # Config file # print (os.getcwd()) @@ -45,24 +50,26 @@ ct_config = ET.parse('ct_config.xml') ct_config_tree = ct_config.getroot() # Colors -color_magenta = [0.800, 0.005, 0.315,1] -color_orange = [0.799, 0.130, 0.063,1] -color_white = [0.8, 0.8, 0.8, 1] -color_yellow = [0.8, 0.619, 0.021, 1] -color_black = [0, 0, 0, 1] +color_magenta = (0.800, 0.005, 0.315,1) +color_orange = (0.799, 0.130, 0.063,1) +color_white = (0.8, 0.8, 0.8, 1) +color_yellow = (0.8, 0.619, 0.021, 1) +color_black = (0, 0, 0, 1) -color_kaykit_black = [0.019, 0.032, 0.037, 1] +color_kaykit_black = (0.019, 0.032, 0.037, 1) -color_endbanner_bluelight = [0.361, 0.527, 0.716, 1] -color_endbanner_bluedark = [0.130, 0.254, 0.407, 1] +color_endbanner_bluelight = (0.361, 0.527, 0.716, 1) +color_endbanner_bluedark = (0.130, 0.254, 0.407, 1) -color_text = [0, 0, 0, 1] # Noir -color_text_red = [0.799, 0.031, 0.038, 1] +color_text = (0, 0, 0, 1) # Noir +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_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 # Sounds audiodev = aud.Device() @@ -126,12 +133,31 @@ def text_info (text): # Mise à jour de l'affichage des compteurs def points_maj (cont): + + # Texte scene.objects['Lifes_text']['Text']=str(scene.objects['Points']['lifes'])+"/"+str(scene.objects['Points']['lifes_max']) scene.objects['Coins_text']['Text']=str(scene.objects['Points']['coins']) scene.objects['Level_text']['Text']=str(scene.objects['Points']['level'])+"/"+str(scene.objects['Points']['level_max']) scene.objects['Minions_text']['Text']=str(scene.objects['Points']['minions']) scene.objects['Points']['tics'] +=1 + # Texte de la vague + if scene.objects['Map_text']['anim']: + if scene.objects['Map_text']['timer']>0: + scene.objects['Map_text'].worldPosition.x = scene.objects['Map_text']['position_init'][0]+(scene.objects['Map_text']['position_end'][0]-scene.objects['Map_text']['position_init'][0])*(scene.objects['Map_text']['timer']/120) + scene.objects['Map_text'].worldPosition.y = scene.objects['Map_text']['position_init'][1]+(scene.objects['Map_text']['position_end'][1]-scene.objects['Map_text']['position_init'][1])*(scene.objects['Map_text']['timer']/120) + scene.objects['Map_text'].worldPosition.z = scene.objects['Map_text']['position_init'][2]+(scene.objects['Map_text']['position_end'][2]-scene.objects['Map_text']['position_init'][2])*(scene.objects['Map_text']['timer']/120) + scene.objects['Map_text']['timer']-=1 + if scene.objects['Map_text']['timer']==0: + scene.objects['Map_text'].color = color_text + scene.objects['Map_text'].worldPosition= scene.objects['Map_text']['position_end'] + scene.objects['Map_text']['anim']=False + + # Gestion du FPS + # if scene.objects['Points']['tics']%60 ==0: # Toutes les 60 tics + # print (time.localtime().tm_sec-fps_time) + # fps_time = time.localtime().tm_sec + # Augmentation d'un niveau if scene.objects['Points']['coins']>=100: scene.objects['Points']['level_max'] +=1 @@ -140,7 +166,9 @@ def points_maj (cont): # Level trop élevé if scene.objects['Points']['level'] > scene.objects['Points']['level_max'] : scene.objects['Level_text'].color = color_text_red - if scene.objects['Points']['level'] <= scene.objects['Points']['level_max']: + if scene.objects['Points']['level'] < scene.objects['Points']['level_max'] : + scene.objects['Level_text'].color = color_text_yellow + if scene.objects['Points']['level'] == scene.objects['Points']['level_max']: scene.objects['Level_text'].color = color_text # Ramasse minions perdues @@ -163,6 +191,7 @@ def points_maj (cont): if scene.objects['Points']['lifes'] == 0 or scene.objects['Points']['wave'] == scene.objects['Terrain']['nb_waves'] : terrain_end () else: + scene.objects['Points']['minions']=0 scene.objects['Points']['wave'] +=1 ct_map.start(scene.objects['Points']['wave']) # Lancement du script de la vague @@ -281,8 +310,9 @@ def terrain_run (): scene.objects['Terrain']['thread_run']=True scene.objects['Points']['time_begin']=time.localtime() if scene.objects['Terrain']['debug_flag']==False: # Lecture dynamique du script python (risque de Segfault de Blender) - importlib.reload(ct_cmd) - # importlib.reload(ct_map) + importlib.reload(ct_cmd) + # imp.reload(ct_cmd) # Avec la bibliotèque imp + # importlib.reload(ct_map) # Waves script ct_cmd.start() # Execution du script utilisateur ct_map.start(1) # Lancement du script de la permière vague @@ -340,21 +370,23 @@ def terrain_end (): if maptime_sec<0: maptime_mn-=1 maptime_sec+=60 - scene.objects['Endbanner_wave_text']['Text']="Wave \n"+str(scene.objects['Points']['wave']) + scene.objects['Endbanner_wave']['Text']="Wave \n"+str(scene.objects['Points']['wave']) if maptime_mn<=99: - scene.objects['Endbanner_points_text']['Text']="Level "+str(scene.objects['Points']['level_max'])+"\n Time "+ str(maptime_mn)+"'"+ str(maptime_sec)+"\"" + scene.objects['Endbanner_points']['Text']="Level "+str(scene.objects['Points']['level_max'])+"\n Time "+ str(maptime_mn)+"'"+ str(maptime_sec)+"\"" else: - scene.objects['Endbanner_points_text']['Text']="Level "+str(scene.objects['Points']['level_max'])+"\n Time "+ str(maptime_mn)+"'" + scene.objects['Endbanner_points']['Text']="Level "+str(scene.objects['Points']['level_max'])+"\n Time "+ str(maptime_mn)+"'" scene.objects['Endbanner'].color = color_endbanner_bluelight - scene.objects['Endbanner_wave_text'].color = color_black - scene.objects['Endbanner_points_text'].color = color_black - scene.objects['Endbanner_ok_text'].color = color_black + scene.objects['Endbanner_wave'].color = color_black + scene.objects['Endbanner_points'].color = color_black + scene.objects['Endbanner_ok'].color = color_black scene.objects['End'].setVisible(True,True) - scene.objects['End']['init_localPosition']= [scene.objects['End'].localPosition.x, scene.objects['End'].localPosition.y, scene.objects['End'].localPosition.z] + scene.objects['End'].worldPosition = [0, 1.53623, -0.892838] + # scene.objects['End']['position_init']= scene.objects['End'].localPosition + # scene.objects['End']['position_init']= [scene.objects['End'].localPosition.x, scene.objects['End'].localPosition.y, scene.objects['End'].localPosition.z] pas=0.5 scene.objects['End'].localPosition.y=scene.objects['End'].localPosition.y-1*pas scene.objects['End'].localPosition.z=scene.objects['End'].localPosition.z+0.85*pas - scene.objects['End']['timer']=scene.objects['End']['timer']+1 + scene.objects['End']['timer']+=1 if scene.objects['End']['timer']== 40: scene.objects['Terrain']['map_run'] = False @@ -392,30 +424,28 @@ def terrain_speed (obj): with open("ct_config.xml", "wb") as f: f.write(buffer_xml) -# Fermer la page de fin +# Page de fin def endbanner_hl(cont): if cont.sensors['MO'].status == JUST_ACTIVATED: scene.objects['Endbanner'].color = color_white - scene.objects['Endbanner_wave_text'].color = color_white - scene.objects['Endbanner_points_text'].color = color_white - scene.objects['Endbanner_ok_text'].color = color_white + scene.objects['Endbanner_wave'].color = color_white + scene.objects['Endbanner_points'].color = color_white + scene.objects['Endbanner_ok'].color = color_white if cont.sensors['MO'].status == JUST_RELEASED: scene.objects['Endbanner'].color = color_endbanner_bluelight - scene.objects['Endbanner_wave_text'].color = color_black - scene.objects['Endbanner_points_text'].color = color_black - scene.objects['Endbanner_ok_text'].color = color_black + scene.objects['Endbanner_wave'].color = color_black + scene.objects['Endbanner_points'].color = color_black + scene.objects['Endbanner_ok'].color = color_black def endbanner_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['End'].localPosition.y=scene.objects['End']['init_localPosition'][0] - scene.objects['End'].localPosition.y=scene.objects['End']['init_localPosition'][1] - scene.objects['End'].localPosition.z=scene.objects['End']['init_localPosition'][2] scene.objects['End'].setVisible(False,True) + scene.objects['End'].worldPosition = [20, 1.53623, -0.892838] scene.objects['Endbanner'].color = [0.592, 0.68, 0.407, 1] - scene.objects['Endbanner_wave_text'].color = color_black - scene.objects['Endbanner_points_text'].color = color_black + scene.objects['Endbanner_wave'].color = color_black + scene.objects['Endbanner_points'].color = color_black scene.objects['End']['timer']= 0 ############################################################################### @@ -454,7 +484,7 @@ def cmd_hl(cont): # 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!="Run-Hl" and obj.name!="Pause-Hl" and obj.name!="Stop" and obj.name!="Stop-Hl" and obj.name!="About-cmd": obj.setVisible(False,True) scene.objects[obj.name+'-Hl'].setVisible(True,True) @@ -475,7 +505,7 @@ def cmd_hl(cont): # Désactivation if cont.sensors['MO'].status == JUST_RELEASED 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!="Run-Hl" and obj.name!="Pause-Hl" and obj.name!="Stop" and obj.name!="Stop-Hl" and obj.name!="About-cmd": scene.objects[obj.name+'-Hl'].setVisible(False,True) obj.setVisible(True,True) @@ -504,6 +534,8 @@ def cmd_click (cont): terrain_stop () if obj.name=="Speed_up" or obj.name=="Speed_down": terrain_speed (obj) + if obj.name=="About-cmd": + about_open () ############################################################################### # Gestion du clavier @@ -559,6 +591,12 @@ def mode(cont): if scene.objects['Terrain']['thread_run']==True: terrain_stop () + # Touche +/- du pad -> Vitesse + ou / + if JUST_ACTIVATED in keyboard.inputs[bge.events.PADPLUSKEY].queue: + terrain_speed (scene.objects['Speed_up']) + if JUST_ACTIVATED in keyboard.inputs[bge.events.PADMINUS].queue: + terrain_speed (scene.objects['Speed_down']) + ############################################################################### # Manipulation 3D de la scène ############################################################################### @@ -654,52 +692,75 @@ def manip_wheel(cont): scene.objects['Camera'].applyMovement((0, 0, sensibilite_wheel), True) ############################################################################### -# Aide +# About ############################################################################### -# # Ouvrir la page d'aide -# def aide(cont): -# if cont.sensors['Click'].status == JUST_ACTIVATED and cont.sensors['MO'].positive : -# # scene.replace('Scene-Aide') # Bug Eevee -> même scene mais camera différente -# scene.active_camera=scene.objects['Aide-Camera'] -# scene.objects['Apropos-Lien_projet'].color= color_link -# scene.objects['Apropos-Lien_maquette'].color= color_link -# scene.objects['Apropos-Lien_a4'].color= color_link -# scene.objects['Apropos-Lien_blender'].color= color_link -# scene.objects['Apropos-Lien_upbge'].color= color_link -# scene.objects['Apropos-Lien_cc'].color= color_link -# scene.objects['Apropos-Lien_gpl'].color= color_link +def about_open(): + scene.objects['Aboutbanner_title'].color = color_black + scene.objects['Aboutbanner_text'].color = color_black + scene.objects['About_link_git'].color= color_link + scene.objects['About_link_gpl'].color= color_link + scene.objects['About_link_blender'].color= color_link + scene.objects['About_link_upbge'].color= color_link + scene.objects['About_link_kay'].color= color_link + scene.objects['About_link_kenney'].color= color_link + scene.objects['About'].setVisible(True,True) + scene.objects['About'].worldPosition = [0, 1.53623, -0.892838] + scene.objects['About']['timer'] = 0 + scene.objects['About']['anim'] = True -# # Fermer la page d'aide -# def aide_fermer(cont): -# if cont.sensors['Click'].status == JUST_ACTIVATED and cont.sensors['MO'].positive : -# # bge.logic.addScene('Scene') # Bug Eevee -> même scene mais camera différente -# scene.active_camera=scene.objects['Camera'] +def about_open_anim(): + pas=0.5 + scene.objects['About'].localPosition.y=scene.objects['About'].localPosition.y-1*pas + scene.objects['About'].localPosition.z=scene.objects['About'].localPosition.z+0.85*pas + scene.objects['About']['timer']+=1 + if scene.objects['About']['timer']== 40: + scene.objects['About']['anim'] = False -# # Aller sur les liens -# def aide_apropos(cont): -# if cont.sensors['Click'].status == JUST_ACTIVATED and cont.sensors['MO'].positive : -# obj = cont.owner -# if obj.name == "Apropos-Lien_maquette" : -# webbrowser.open('https://www.a4.fr/wiki/') -# if obj.name == "Apropos-Lien_projet" : -# webbrowser.open('https://gitlab.com/blender-edutech') -# if obj.name == "Apropos-Lien_a4" : -# webbrowser.open('https://www.a4.fr') -# if obj.name == "Apropos-Lien_blender" : -# webbrowser.open('https://blender.org') -# if obj.name == "Apropos-Lien_upbge" : -# webbrowser.open('https://upbge.org') -# if obj.name == "Apropos-Lien_cc" : -# webbrowser.open('https://creativecommons.org/licenses/by-sa/4.0/') -# if obj.name == "Apropos-Lien_gpl" : -# webbrowser.open('https://www.gnu.org/licenses/gpl-3.0.html') +def about_hl(cont): + if cont.sensors['MO'].status == JUST_ACTIVATED: + scene.objects['Aboutbanner'].color = color_white + scene.objects['Aboutbanner_ok'].color = color_white + scene.objects['Aboutbanner_title'].color = color_white + if cont.sensors['MO'].status == JUST_RELEASED: + scene.objects['Aboutbanner'].color = color_endbanner_bluelight + scene.objects['Aboutbanner_ok'].color = color_black + scene.objects['Aboutbanner_title'].color = color_black + +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 + +def about_link(cont): + if cont.sensors['Click'].status == JUST_ACTIVATED and cont.sensors['MO'].positive : + obj = cont.owner + if obj.name == "About_link_git-colbox" : + webbrowser.open('https://gitlab.com/phroy/codetower') + if obj.name == "About_link_gpl-colbox" : + webbrowser.open('https://www.gnu.org/licenses/gpl-3.0.html') + if obj.name == "About_link_blender-colbox" : + webbrowser.open('https://www.blender.org') + if obj.name == "About_link_upbge-colbox" : + webbrowser.open('https://www.upbge.org') + if obj.name == "About_link_kay-colbox" : + webbrowser.open('https://www.kaylousberg.com') + if obj.name == "About_link_kenney-colbox" : + webbrowser.open('https://www.kenney.nl') + if obj.name == "About_link_blender-colbox" : + webbrowser.open('https://www.blender.org') + +def about_link_hl(cont): + if cont.sensors['MO'].status == JUST_ACTIVATED : + obj = cont.owner + name=obj.name[:-7] + scene.objects[name].color = color_link_hl + if cont.sensors['MO'].status == JUST_RELEASED : + obj = cont.owner + name=obj.name[:-7] + scene.objects[name].color = color_link -# # Le highlight des liens -# def aide_apropos_hl(cont): -# if cont.sensors['MO'].status == JUST_ACTIVATED : -# obj = cont.owner -# obj.color = color_link_hl -# if cont.sensors['MO'].status == JUST_RELEASED : -# obj = cont.owner -# obj.color = color_link diff --git a/ct_cmd.py b/ct_cmd.py index 8f31c04..403ba30 100644 --- a/ct_cmd.py +++ b/ct_cmd.py @@ -15,14 +15,14 @@ from ct_lib import * # Bibliothèque CodeTower # ############################################################################### -purple = [0.202, 0.114, 0.521,1] -turquoise = [0.051, 0.270, 0.279,1] -magenta = [0.799, 0.005, 0.314,1] -orange = [0.799, 0.130, 0.063,1] -yellow = [0.799, 0.617, 0.021, 1] -green = [0.246, 0.687, 0.078, 1] -red = [0.799, 0.031, 0.038, 1] -blue = [0.127, 0.456, 1.000, 1] +purple = (0.202, 0.114, 0.521,1) +turquoise = (0.051, 0.270, 0.279,1) +magenta = (0.799, 0.005, 0.314,1) +orange = (0.799, 0.130, 0.063,1) +yellow = (0.799, 0.617, 0.021, 1) +green = (0.246, 0.687, 0.078, 1) +red = (0.799, 0.031, 0.038, 1) +blue = (0.127, 0.456, 1.000, 1) ############################################################################### # En: Threads management << DONT CHANGE THIS SECTION >> @@ -76,14 +76,13 @@ def commands(): while True: - if ct_level()==1: + if ct_level() == 1: ct_build(4,5, "Archer tower", "Tower #1", blue, "square-A") - - if ct_level()==1: + + if ct_level()==3: ct_build(4,-2, "Archer tower", "Tower #2", blue, "square-A") - if ct_level()==3: + if ct_level()==2: ct_build(5,5, "Mage tower", "Tower #3", magenta, "square-B") - end() # End of cycle << DONT CHANGE THIS LINE >> diff --git a/ct_config.xml b/ct_config.xml index c4cbdab..5e20278 100644 --- a/ct_config.xml +++ b/ct_config.xml @@ -1,5 +1,5 @@ - 4.0 + 2.0 \ No newline at end of file diff --git a/ct_lib.py b/ct_lib.py index e624e4d..0899b83 100644 --- a/ct_lib.py +++ b/ct_lib.py @@ -30,21 +30,26 @@ import random scene = bge.logic.getCurrentScene() # Colors -tower_purple = [0.202, 0.114, 0.521,1] -tower_turquoise = [0.051, 0.270, 0.279,1] -tower_magenta = [0.799, 0.005, 0.314,1] -tower_orange = [0.799, 0.130, 0.063,1] -tower_yellow = [0.799, 0.617, 0.021, 1] -tower_green = [0.246, 0.687, 0.078, 1] -tower_red = [0.799, 0.031, 0.038, 1] -tower_blue = [0.127, 0.456, 1.000, 1] -tower_black = [0, 0, 0, 1] +tower_purple = (0.202, 0.114, 0.521,1) +tower_turquoise = (0.051, 0.270, 0.279,1) +tower_magenta = (0.799, 0.005, 0.314,1) +tower_orange = (0.799, 0.130, 0.063,1) +tower_yellow = (0.799, 0.617, 0.021, 1) +tower_green = (0.246, 0.687, 0.078, 1) +tower_red = (0.799, 0.031, 0.038, 1) +tower_blue = (0.127, 0.456, 1.000, 1) +tower_black = (0, 0, 0, 1) -ray_yellow = [0.799, 0.617, 0.021, 1] # [0.8, 0.619, 0.021]) -ray_blue = [0.127, 0.456, 1.000, 1] -ray_black = [0, 0, 0, 1] +color_text = (0, 0, 0, 1) # Noir +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_kaykit_black = [0.019, 0.032, 0.037, 1] +ray_yellow = (0.799, 0.617, 0.021, 1) # [0.8, 0.619, 0.021]) +ray_blue = (0.127, 0.456, 1.000, 1) +ray_black = (0, 0, 0, 1) + +color_kaykit_black = (0.019, 0.032, 0.037, 1) # Sounds audiodev = aud.Device() @@ -163,6 +168,9 @@ def ct_minion_details(x,y,cat,level,body="Knight_m_A_common"): minion.name="wm("+str(scene.objects['Terrain']['idm'])+")" # Wave minion (wm), identifier minion (idm) scene.objects['Points']['minions'] +=1 scene.objects['Points']['minions_run'] +=1 + minion['dist']=0.0 + minion['dist_last_x']=x + minion['dist_last_y']=y # Caracteristics minion_carac= scene.objects['Terrain']['minion_carac'] @@ -193,7 +201,7 @@ def scn_minion_dead(cont): obj.endObject() ############################################################################### -# Spells +# Spells / Casts ############################################################################### # Buff/debuff Minion @@ -202,6 +210,11 @@ def scn_minion_affect(cont): # print (obj.name, obj['buff']) slow_state=False + # Distance parcourue + obj['dist']=obj['dist']+ math.sqrt((obj.worldPosition.x-obj['dist_last_x'])**2+(obj.worldPosition.y-obj['dist_last_y'])**2) + obj['dist_last_x']=obj.worldPosition.x + obj['dist_last_y']=obj.worldPosition.y + # Etats actif for debuff_i in obj['buff']: if debuff_i[1] <= 0: @@ -277,6 +290,8 @@ def ct_build_details(x,y, cat='Archer tower', tower_name="Tower", color=tower_pu tour['techno']=[] tour['cast']="slow" tour['cast_duration']=2 + tour['target']=[] + tour['target_past']=[] # Capteur Near tour.sensors['Near'].distance=tour['range'] @@ -298,9 +313,57 @@ def scn_tower_near(cont): sensor = obj.sensors['Near'] # Tir - # FIXME: tir sur le plus avancé if sensor.positive and len(sensor.hitObjectList)>0 and scene.objects['Terrain']['run']==True : + + # Tir sur le plus avancé basé sur les distances parcourues target=sensor.hitObjectList[0] + target_dist = target['dist'] + for obj_i in sensor.hitObjectList: + if obj_i['dist']> target_dist: + target=obj_i + target_dist = target['dist'] + + # Tir sur le plus avancé basé sur l'ordre de passage + # target=sensor.hitObjectList[0] + # target_id = target['navPosition'] + # for obj_i in sensor.hitObjectList: + # if obj_i['navPosition']< target_id: + # target=obj_i + # target_id = target['navPosition'] + + # Tir sur le plus avancé basé sur les distances par rapport à la tour -> ne marche pas + # target=sensor.hitObjectList[0] + # if len(sensor.hitObjectList)>1: + # target_eloignement = False + # target_distance_eloignement = 0 + # target_distance_approche = 100 + # print ("detection:",sensor.hitObjectList) + # for obj_i in sensor.hitObjectList: + # for obj_j in obj['target_past']: + # if obj_j[0]==obj_i.name: + # print ("name :", obj_j[0], "distance :", obj.getDistanceTo(obj_i), "distance old :", obj_j[1], "ecart :", obj.getDistanceTo(obj_i) - obj_j[1]) + # # Éloignement + # if obj.getDistanceTo(obj_i) - obj_j[1] > 0: # Ecart de distance + # target_eloignement = True + # if obj.getDistanceTo(obj_i) > target_distance_eloignement: + # target=obj_i + # target_distance_eloignement = obj.getDistanceTo(obj_i) + # # Approche + # else: + # if target_eloignement == False: + # if obj.getDistanceTo(obj_i) < target_distance_approche: + # target=obj_i + # target_distance_approche = obj.getDistanceTo(obj_i) + # if target_eloignement == True: + # print ("Eloignement : target:", target.name, "distance :", obj.getDistanceTo(target)) + # print ("") + # else: + # print ("Approche : target:", target.name, "distance :", obj.getDistanceTo(target)) + # print ("") + # obj['target_past']=[] + # for obj_i in sensor.hitObjectList: + # obj['target_past'].append([obj_i.name, obj.getDistanceTo(obj_i)]) + # Orientation du tower minion towerminion="tm("+str(round(obj.worldPosition.x))+','+str(round(obj.worldPosition.y))+")" @@ -365,6 +428,22 @@ def scn_tower_near(cont): # Carte ############################################################################### +# Texte de carte +def ct_map_text_wave(wave): + scene.objects['Map_text']['Text']=("Wave " + str(wave)) + scene.objects['Map_text'].setVisible(True,False) + scene.objects['Map_text'].color = color_text_yellow + scene.objects['Map_text']['timer']=120 + scene.objects['Map_text']['position_init']=[8.22904, -2.86185, 6.07395] + scene.objects['Map_text']['position_end']=[11.1751, 5.99318, 0.480557] + scene.objects['Map_text'].worldPosition= scene.objects['Map_text']['position_init'] + scene.objects['Map_text']['anim']=True + + # Texte de carte +def ct_map_text(text): + scene.objects['Map_text']['Text']=text + scene.objects['Map_text'].setVisible(True,False) + # Fin def ct_map_end(x,y): mapend= scene.addObject("Map_end", scene.objects['Terrain']) @@ -446,11 +525,6 @@ def ct_print (text): scene.objects['Text_info-1']['Text']=lines_txt[0]+"\n"+lines_txt[1]+"\n"+lines_txt[2] scene.objects['Text_info-2']['Text']=lines_txt[3]+"\n"+lines_txt[4]+"\n"+lines_txt[5] -# Texte de carte -def ct_map_text(text): - scene.objects['Map_text']['Text']=text - scene.objects['Map_text'].setVisible(True,False) - ############################################################################### # Dessin bas niveau (bge.render.drawLine) ############################################################################### diff --git a/ct_map1.py b/ct_map1.py index 103b695..929d01e 100644 --- a/ct_map1.py +++ b/ct_map1.py @@ -1,5 +1,7 @@ import bge # Bibliothèque Blender Game Engine (UPBGE) +import bpy # Blender from ct_lib import * # Bibliothèque CodeTower +import os ############################################################################### # ct_map1.py @@ -119,25 +121,28 @@ def minion_definition(): # Wave 1 def wave1(): - ct_map_text("Wave 1") + ct_map_text_wave(1) for i in range (15): - ct_minion_details(14,3,"Orc",1, "Orc_A_common") + ct_minion(14,3,"Orc",1) + # ct_minion_details(14,3,"Orc",1, "Orc_A_common") ct_sleep (2) end() # Wave 2 def wave2(): - ct_map_text("Wave 2") + ct_map_text_wave(2) for i in range (20): - ct_minion_details(14,3,"Orc",1, "Orc_A_common") + ct_minion(14,3,"Orc",1) + # ct_minion_details(14,3,"Orc",1, "Orc_A_common") ct_sleep (1) end() # Wave 3 def wave3(): - ct_map_text("Wave 3") + ct_map_text_wave(3) for i in range (30): - ct_minion_details(14,3,"Orc",1, "Orc_A_common") + ct_minion(14,3,"Orc",1) + # ct_minion_details(14,3,"Orc",1, "Orc_A_common") # ct_minion(14,3,"Knight",1) ct_sleep (1) end() @@ -172,12 +177,23 @@ def tower_definition(): # Initialization def map_init(): + + # Base scene.objects['Terrain']['size'] = [-15,15,-10,10] # Map size scene.objects['Terrain']['navmesh'] = "Navmesh.004" # Navmesh minion_definition() tower_definition() scene.objects['Terrain']['nb_waves'] = 3 # Number of waves + # Landscape + file_path = 'asset/map/map1-landscape.blend' + inner_path = 'Object' + object_name = 'Landscape' + bpy.ops.wm.append( + filepath=os.path.join(file_path, inner_path, object_name), + directory=os.path.join(file_path, inner_path), + filename=object_name) + # Ajout des sorties scene.objects['Terrain']['endtile'] = "tile_straight.036" ct_map_end(1,-10)