Fixed AND/OR or components staying inactive until they receive their first signal. Closes #387
This commit is contained in:
@@ -38,17 +38,16 @@ namespace Barotrauma.Items.Components
|
|||||||
}
|
}
|
||||||
|
|
||||||
public AndComponent(Item item, XElement element)
|
public AndComponent(Item item, XElement element)
|
||||||
: base (item, element)
|
: base(item, element)
|
||||||
{
|
{
|
||||||
timeSinceReceived = new float[] { Math.Max(timeFrame*2.0f,0.1f), Math.Max(timeFrame*2.0f, 0.1f) };
|
timeSinceReceived = new float[] { Math.Max(timeFrame * 2.0f, 0.1f), Math.Max(timeFrame * 2.0f, 0.1f) };
|
||||||
|
IsActive = true;
|
||||||
//output = "1";
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void Update(float deltaTime, Camera cam)
|
public override void Update(float deltaTime, Camera cam)
|
||||||
{
|
{
|
||||||
bool sendOutput = true;
|
bool sendOutput = true;
|
||||||
for (int i = 0; i<timeSinceReceived.Length; i++)
|
for (int i = 0; i < timeSinceReceived.Length; i++)
|
||||||
{
|
{
|
||||||
if (timeSinceReceived[i] > timeFrame) sendOutput = false;
|
if (timeSinceReceived[i] > timeFrame) sendOutput = false;
|
||||||
timeSinceReceived[i] += deltaTime;
|
timeSinceReceived[i] += deltaTime;
|
||||||
@@ -67,12 +66,10 @@ namespace Barotrauma.Items.Components
|
|||||||
case "signal_in1":
|
case "signal_in1":
|
||||||
if (signal == "0") return;
|
if (signal == "0") return;
|
||||||
timeSinceReceived[0] = 0.0f;
|
timeSinceReceived[0] = 0.0f;
|
||||||
IsActive = true;
|
|
||||||
break;
|
break;
|
||||||
case "signal_in2":
|
case "signal_in2":
|
||||||
if (signal == "0") return;
|
if (signal == "0") return;
|
||||||
timeSinceReceived[1] = 0.0f;
|
timeSinceReceived[1] = 0.0f;
|
||||||
IsActive = true;
|
|
||||||
break;
|
break;
|
||||||
case "set_output":
|
case "set_output":
|
||||||
output = signal;
|
output = signal;
|
||||||
|
|||||||
@@ -5,14 +5,15 @@ namespace Barotrauma.Items.Components
|
|||||||
class OrComponent : AndComponent
|
class OrComponent : AndComponent
|
||||||
{
|
{
|
||||||
public OrComponent(Item item, XElement element)
|
public OrComponent(Item item, XElement element)
|
||||||
: base (item, element)
|
: base(item, element)
|
||||||
{
|
{
|
||||||
|
IsActive = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void Update(float deltaTime, Camera cam)
|
public override void Update(float deltaTime, Camera cam)
|
||||||
{
|
{
|
||||||
bool sendOutput = false;
|
bool sendOutput = false;
|
||||||
for (int i = 0; i<timeSinceReceived.Length; i++)
|
for (int i = 0; i < timeSinceReceived.Length; i++)
|
||||||
{
|
{
|
||||||
if (timeSinceReceived[i] <= timeFrame) sendOutput = true;
|
if (timeSinceReceived[i] <= timeFrame) sendOutput = true;
|
||||||
timeSinceReceived[i] += deltaTime;
|
timeSinceReceived[i] += deltaTime;
|
||||||
|
|||||||
Reference in New Issue
Block a user