// Byte Deserialization
 public ControllableEntity(VRage.ByteStream stream)
     : base(stream)
 {
     Log.ClassName = "GP.Concealment.World.Entities.ControllableEntity";
     IsMoving = stream.getBoolean();
     RecentlyMoved = stream.getBoolean();
     RecentlyMovedEnds = stream.getDateTime();
     Log.Trace("New Controllable Entity " + DisplayName, "ctr");
 }
        // Byte Deserialization
        public ObservingEntity(VRage.ByteStream stream)
            : base(stream)
        {
            List<long> entitiesViewing = stream.getLongList();
            foreach (long id in entitiesViewing) {
                EntitiesViewing.Add(id, null);
            }

            LastObservingTime = stream.getDateTime();
            LastObservingPosition = stream.getVector3D();
            //Log.Trace("Deserialized LastObservingTime of " + LastObservingTime, "stream ctr");
            //Log.Trace("Deserialized LastObservingPosition of " + LastObservingPosition, "stream ctr");
            //Log.Trace("Deserialized ViewDistance of " + ViewDistance, "stream ctr");
        }
        // Byte Deserialization
        public RevealedEntity(VRage.ByteStream stream)
            : base(stream)
        {
            // Nearly everything is available from the ingame Entity
            IsObserved = stream.getBoolean();
            IsRevealBlocked = stream.getBoolean();
            List<long> entitiesViewedByList = stream.getLongList();
            foreach (long id in entitiesViewedByList) {
                EntitiesViewedBy.Add(id, null);
            }
            RevealedAt = stream.getDateTime();

            MovedSinceIsInAsteroidCheck = true;
            Log.ClassName = "GP.Concealment.World.Entities.RevealedEntity";
            Log.Trace("Finished RevealedEntity deserialize constructor", "ctr");
        }