mirror of
https://github.com/openshwprojects/OpenBK7231T_App.git
synced 2026-03-15 11:49:27 +01:00
63 lines
1.7 KiB
C++
63 lines
1.7 KiB
C++
#ifdef WINDOWS
|
|
#include "Controller_Pot.h"
|
|
#include "Shape.h"
|
|
#include "Junction.h"
|
|
#include "Text.h"
|
|
|
|
CControllerPot::CControllerPot(class CJunction *_a, class CJunction *_b, class CJunction *_o) {
|
|
a = _a;
|
|
b = _b;
|
|
o = _o;
|
|
frac = 0.5f;
|
|
posA.set(-180, -60);
|
|
posB.set(160, -60);
|
|
}
|
|
class CControllerBase *CControllerPot::cloneController(class CShape *origOwner, class CShape *newOwner) {
|
|
CControllerPot *r = new CControllerPot();
|
|
r->posA = posA;
|
|
r->posB = posB;
|
|
r->frac = frac;
|
|
r->mover = newOwner->findShapeByName_r(this->mover->getName());
|
|
r->a = newOwner->findShapeByName_r(this->a->getName())->asJunction();
|
|
r->b = newOwner->findShapeByName_r(this->b->getName())->asJunction();
|
|
r->o = newOwner->findShapeByName_r(this->o->getName())->asJunction();
|
|
r->display = newOwner->findShapeByName_r(this->display->getName())->asText();
|
|
return r;
|
|
}
|
|
class CJunction *CControllerPot::findOtherJunctionIfPassable(class CJunction *ju) {
|
|
|
|
return 0;
|
|
}
|
|
void CControllerPot::rotateDegreesAround(float f, const Coord &p) {
|
|
posA = posA.rotateDegreesAround(f, p);
|
|
posB = posB.rotateDegreesAround(f, p);
|
|
}
|
|
void CControllerPot::sendEvent(int code, const class Coord &mouseOfs) {
|
|
// could be way better with some math
|
|
frac += mouseOfs.getX()*0.005f;
|
|
|
|
if (frac < 0)
|
|
frac = 0;
|
|
if (frac > 1)
|
|
frac = 1;
|
|
}
|
|
void CControllerPot::onDrawn() {
|
|
if (a->getVisitCount() > 0 && b->getVisitCount() > 0) {
|
|
float aVal = a->getVoltage();
|
|
float bVal = b->getVoltage();
|
|
float fin = aVal + (bVal - aVal) * frac;
|
|
o->setCurrentSource(true);
|
|
o->setVoltage(fin);
|
|
o->setVisitCount(1);
|
|
display->setTextf("%f", fin);
|
|
}
|
|
else {
|
|
o->setCurrentSource(false);
|
|
o->setVoltage(0);
|
|
display->setTextf("Not connected");
|
|
}
|
|
mover->setPosition(posA.lerp(posB, frac));
|
|
}
|
|
|
|
#endif
|