From c180e668a4ed1f29e7f2296720688eaf02569852 Mon Sep 17 00:00:00 2001 From: Takao Akaki Date: Tue, 25 Jul 2023 20:54:08 +0900 Subject: [PATCH 1/4] Fix scale bug --- src/Face.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Face.cpp b/src/Face.cpp index 28ba24b..af670a8 100644 --- a/src/Face.cpp +++ b/src/Face.cpp @@ -117,7 +117,7 @@ void Face::draw(DrawContext *ctx) { if (scale != 1.0 || rotation != 0) { tmpSprite->setColorDepth(ctx->getColorDepth()); - tmpSprite->createSprite((int32_t)((float)M5.Display.width() * scale), (int32_t)((float)M5.Display.height() * scale)); + tmpSprite->createSprite((int32_t)((float)320 * scale), (int32_t)((float)240 * scale)); tmpSprite->setBitmapColor(ctx->getColorPalette()->get(COLOR_PRIMARY), ctx->getColorPalette()->get(COLOR_BACKGROUND)); if (ctx->getColorDepth() != 1) { From 45418886941de1237dd755a34047600ff1c45beb Mon Sep 17 00:00:00 2001 From: Takao Akaki Date: Sun, 6 Aug 2023 23:36:07 +0900 Subject: [PATCH 2/4] Deal with freezing issue in models without PSRAM --- src/Avatar.cpp | 17 +++++++++++++---- src/Avatar.h | 3 ++- src/Face.cpp | 12 ++++++------ src/Face.h | 3 +++ 4 files changed, 24 insertions(+), 11 deletions(-) diff --git a/src/Avatar.cpp b/src/Avatar.cpp index 8dcd15e..582e467 100644 --- a/src/Avatar.cpp +++ b/src/Avatar.cpp @@ -36,11 +36,14 @@ void facialLoop(void *args) { unsigned long last_saccade_millis = 0; unsigned long last_blink_millis = 0; bool eye_open = true; + float vertical = 0.0f; + float horizontal = 0.0f; + float breath = 0.0f; while (avatar->isDrawing()) { if ((millis() - last_saccade_millis) > saccade_interval) { - float vertical = rand_r(&seed) / (RAND_MAX / 2.0) - 1; - float horizontal = rand_r(&seed) / (RAND_MAX / 2.0) - 1; + vertical = rand_r(&seed) / (RAND_MAX / 2.0) - 1; + horizontal = rand_r(&seed) / (RAND_MAX / 2.0) - 1; avatar->setGaze(vertical, horizontal); saccade_interval = 500 + 100 * random(20); last_saccade_millis = millis(); @@ -58,8 +61,8 @@ void facialLoop(void *args) { last_blink_millis = millis(); } c = (c + 1) % 100; - float f = sin(c * 2 * PI / 100.0); - avatar->setBreath(f); + breath = sin(c * 2 * PI / 100.0); + avatar->setBreath(breath); vTaskDelay(33); } vTaskDelete(NULL); @@ -83,6 +86,10 @@ Avatar::Avatar(Face *face) colorDepth{1}, batteryIconStatus{BatteryIconStatus::invisible}{} +Avatar::~Avatar() { + delete face; +} + void Avatar::setFace(Face *face) { this->face = face; } Face *Avatar::getFace() const { return face; } @@ -159,7 +166,9 @@ void Avatar::draw() { bool Avatar::isDrawing() { return _isDrawing; } void Avatar::setExpression(Expression expression) { + suspend(); this->expression = expression; + resume(); } Expression Avatar::getExpression() { diff --git a/src/Avatar.h b/src/Avatar.h index f03da30..6531e30 100644 --- a/src/Avatar.h +++ b/src/Avatar.h @@ -31,7 +31,7 @@ class Avatar { public: Avatar(); explicit Avatar(Face *face); - ~Avatar() = default; + ~Avatar(); Avatar(const Avatar &other) = default; Avatar &operator=(const Avatar &other) = default; Face *getFace() const; @@ -61,6 +61,7 @@ class Avatar { void resume(); void setBatteryIcon(bool iconStatus); void setBatteryStatus(bool isCharging, int32_t batteryLevel); + void resetDraw(); }; diff --git a/src/Face.cpp b/src/Face.cpp index af670a8..df7eec6 100644 --- a/src/Face.cpp +++ b/src/Face.cpp @@ -5,9 +5,6 @@ #include "Face.h" namespace m5avatar { -Balloon b; -Effect h; -BatteryIcon battery; BoundingRect br; Face::Face() @@ -54,6 +51,9 @@ Face::~Face() { delete eyeblowLPos; delete sprite; delete boundingRect; + delete b; + delete h; + delete battery; } void Face::setMouth(Drawable *mouth) { this->mouth = mouth; } @@ -106,9 +106,9 @@ void Face::draw(DrawContext *ctx) { eyeblowL->draw(sprite, rect, ctx); // TODO(meganetaaan): make balloons and effects selectable - b.draw(sprite, br, ctx); - h.draw(sprite, br, ctx); - battery.draw(sprite, br, ctx); + b->draw(sprite, br, ctx); + h->draw(sprite, br, ctx); + battery->draw(sprite, br, ctx); // drawAccessory(sprite, position, ctx); // TODO(meganetaaan): rethink responsibility for transform function diff --git a/src/Face.h b/src/Face.h index 1b1b9da..72344b1 100644 --- a/src/Face.h +++ b/src/Face.h @@ -30,6 +30,9 @@ class Face { BoundingRect *boundingRect; M5Canvas *sprite; M5Canvas *tmpSprite; + Balloon *b; + Effect *h; + BatteryIcon *battery; public: // constructor From 7e2455696165067cb5bb807cd39398863512517d Mon Sep 17 00:00:00 2001 From: Takao Akaki Date: Sun, 6 Aug 2023 23:50:50 +0900 Subject: [PATCH 3/4] delete resetDraw --- src/Avatar.h | 1 - 1 file changed, 1 deletion(-) diff --git a/src/Avatar.h b/src/Avatar.h index 6531e30..da46c3c 100644 --- a/src/Avatar.h +++ b/src/Avatar.h @@ -61,7 +61,6 @@ class Avatar { void resume(); void setBatteryIcon(bool iconStatus); void setBatteryStatus(bool isCharging, int32_t batteryLevel); - void resetDraw(); }; From e0c4e09eadae1c5380bf2cfec297010d3fac150e Mon Sep 17 00:00:00 2001 From: Takao Akaki Date: Mon, 7 Aug 2023 13:29:36 +0900 Subject: [PATCH 4/4] raise version v0.8.6 --- library.json | 2 +- library.properties | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/library.json b/library.json index 2e1bb15..4687ac6 100644 --- a/library.json +++ b/library.json @@ -17,7 +17,7 @@ "license": "MIT", "dependencies": { }, - "version": "0.8.5", + "version": "0.8.6", "frameworks": "arduino", "platforms": "espressif32" } diff --git a/library.properties b/library.properties index 7ad4e6d..d958173 100644 --- a/library.properties +++ b/library.properties @@ -1,5 +1,5 @@ name=M5Stack_Avatar -version=0.8.5 +version=0.8.6 author=Shinya Ishikawa maintainer=Shinya Ishikawa sentence=Yet another avatar module for M5Stack