So the only reason why it works well with the time delta values is because
they are small numbers.  That is what I was missing.
Why mess around with floats for timing in any place then?  It looks like
the root for all the "float delta" values is from EngineTime.tick().  Why
does this part of the system use floats as apposed to longs?  For the
memory savings of 64bit vs 32bit?  In that case,  you could go all the way
down to a short for these delta values as they are capped to 1000?
(there is no reason in particular to change the current system,  just
digging for understanding)


On Wed, Dec 11, 2013 at 12:16 PM, Immortius <notifications@github.com>wrote:

> In
> engine/src/main/java/org/terasology/logic/drowning/DrowningComponent.java:
>
> > @@ -24,7 +24,16 @@
> >   */
> >  public class DrowningComponent implements Component {
> >      @Replicate(FieldReplicateType.SERVER_TO_OWNER)
> > -    public long startDrowningTime;
> > +    public float breathRemaining;
>
> Yes. A float has varying accuracy, and if large enough ceases to be able
> to represent millisecond or even second precision.
>
> —
> Reply to this email directly or view it on GitHub<https://github.com/MovingBlocks/Terasology/pull/772/files#r8280011>
> .
>