mirror of
https://github.com/MightyPirates/OpenComputers.git
synced 2025-09-13 17:28:52 -04:00
better check for whether power redistribution is needed and reduced number of network packets generated for synchronizing average buffer fill (used for display, brightness of overlay on distributor)
This commit is contained in:
parent
521613f3f8
commit
f4641d59e8
@ -16,6 +16,8 @@ class PowerDistributor extends Rotatable with Environment {
|
|||||||
|
|
||||||
var average = 0.0
|
var average = 0.0
|
||||||
|
|
||||||
|
private var lastSentAverage = 0.0
|
||||||
|
|
||||||
// ----------------------------------------------------------------------- //
|
// ----------------------------------------------------------------------- //
|
||||||
|
|
||||||
override def updateEntity() {
|
override def updateEntity() {
|
||||||
@ -77,16 +79,17 @@ class PowerDistributor extends Rotatable with Environment {
|
|||||||
|
|
||||||
private def computeAverage() = {
|
private def computeAverage() = {
|
||||||
// Computer average fill ratio of all buffers.
|
// Computer average fill ratio of all buffers.
|
||||||
val (sumBuffer, sumBufferSize) = connectors.foldRight((0.0, 0.0))((c, acc) => {
|
val (minRelativeBuffer, maxRelativeBuffer, sumBuffer, sumBufferSize) =
|
||||||
c.dirty = false // clear dirty flag for all connectors
|
connectors.foldRight((1.0, 0.0, 0.0, 0.0))((c, acc) => {
|
||||||
(acc._1 + c.buffer, acc._2 + c.bufferSize)
|
c.dirty = false // clear dirty flag for all connectors
|
||||||
})
|
(acc._1 min (c.buffer / c.bufferSize), acc._2 max (c.buffer / c.bufferSize),
|
||||||
val newAverage = if (sumBufferSize > 0) sumBuffer / sumBufferSize else 0
|
acc._3 + c.buffer, acc._4 + c.bufferSize)
|
||||||
if ((average - newAverage).abs > 10e-4) {
|
})
|
||||||
average = newAverage
|
average = if (sumBufferSize > 0) sumBuffer / sumBufferSize else 0
|
||||||
|
if ((lastSentAverage - average).abs > 0.05) {
|
||||||
|
lastSentAverage = average
|
||||||
ServerPacketSender.sendPowerState(this)
|
ServerPacketSender.sendPowerState(this)
|
||||||
true
|
|
||||||
}
|
}
|
||||||
else false
|
maxRelativeBuffer - minRelativeBuffer > 10e-4
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user