git-svn-id: svn://db.shs.com.ru/libs@1 a8b55f48-bf90-11e4-a774-851b48703e85
69 lines
1.4 KiB
C++
69 lines
1.4 KiB
C++
#include "brick_logic.h"
|
|
|
|
|
|
bool BrickLogicAnd::tick_body(double time) {
|
|
bool b = true;
|
|
for (int i = 0; i < inputs_count; ++i)
|
|
if (inputs[i] <= 0) {b = false; break;}
|
|
outputs[0] = dbool(b);
|
|
return true;
|
|
}
|
|
|
|
|
|
bool BrickLogicOr::tick_body(double time) {
|
|
bool b = false;
|
|
for (int i = 0; i < inputs_count; ++i)
|
|
if (inputs[i] > 0) {b = true; break;}
|
|
outputs[0] = dbool(b);
|
|
return true;
|
|
}
|
|
|
|
|
|
bool BrickLogicXor::tick_body(double time) {
|
|
bool b = false;
|
|
for (int i = 0; i < inputs_count; ++i) {
|
|
if (inputs[i] > 0) b = (b ^ true);
|
|
else b = b ^ false;
|
|
}
|
|
outputs[0] = dbool(b);
|
|
return true;
|
|
}
|
|
|
|
|
|
bool BrickLogicNAnd::tick_body(double time) {
|
|
bool b = true;
|
|
for (int i = 0; i < inputs_count; ++i)
|
|
if (inputs[i] <= 0) {b = false; break;}
|
|
outputs[0] = 1. - dbool(b);
|
|
return true;
|
|
}
|
|
|
|
|
|
bool BrickLogicNOr::tick_body(double time) {
|
|
bool b = false;
|
|
for (int i = 0; i < inputs_count; ++i)
|
|
if (inputs[i] > 0) {b = true; break;}
|
|
outputs[0] = 1. - dbool(b);
|
|
return true;
|
|
}
|
|
|
|
|
|
bool BrickLogicNXor::tick_body(double time) {
|
|
bool b = false;
|
|
for (int i = 0; i < inputs_count; ++i) {
|
|
if (inputs[i] > 0) b = (b ^ true);
|
|
else b = b ^ false;
|
|
}
|
|
outputs[0] = 1. - dbool(b);
|
|
return true;
|
|
}
|
|
|
|
|
|
bool BrickLogicCompare::tick_body(double time) {
|
|
outputs[0] = outputs[1] = outputs[2] = 0.;
|
|
if (inputs[0] > inputs[1]) outputs[0] = 1.;
|
|
if (inputs[0] < inputs[1]) outputs[2] = 1.;
|
|
if (fabs(inputs[0] - inputs[1]) <= inputs[Tolerance]) outputs[1] = 1.;
|
|
return true;
|
|
}
|