public GameObjectList(SerializationInfo info, StreamingContext context) : base(info, context)
    {
        SerializationHelper.Variables vars = context.Context as SerializationHelper.Variables;

        children = (List <GameObject>)info.GetValue("children", typeof(List <GameObject>));

        toRemove = new List <GameObject>();
    }
    public GameObjectGrid(SerializationInfo info, StreamingContext context) : base(info, context)
    {
        SerializationHelper.Variables vars = context.Context as SerializationHelper.Variables;

        grid = (GameObject[, ])info.GetValue("grid", typeof(GameObject[, ]));

        cellWidth  = info.GetInt32("cellWidth");
        cellHeight = info.GetInt32("cellHeight");
    }
    public virtual void GetObjectData(SerializationInfo info, StreamingContext context)
    {
        SerializationHelper.Variables v = context.GetVars();
        if (parent == null || v.FullySerializeEverything || v.FullySerialized.Contains(parent.GUID))
        {
            info.AddValue("parent", parent);
        }
        else
        {
            info.AddValue("parentGUID", parent.GUID.ToString());
        }

        info.AddValue("posX", position.X);
        info.AddValue("posY", position.Y);
        info.AddValue("velX", velocity.X);
        info.AddValue("velY", velocity.Y);
        info.AddValue("layer", layer);
        info.AddValue("id", id);
        info.AddValue("visible", visible);
        info.AddValue("guid", guid);
    }