anchor.diff:      procedure QueryPoint(const p: TG2Vec2; var EntityList: TG2Scene2DEntityList);
       function AdjustToGrid(const v: TG2Vec2): TG2Vec2;
       function GridPos(const v: TG2Vec2): TPoint;
  -    function CreatePrefab(const dm: TG2DataManager; const Transform: TG2Transform2): TG2Scene2DEntity;
  -    function CreatePrefab(const PrefabName: String; const Transform: TG2Transform2): TG2Scene2DEntity;
  +    function CreatePrefab(const dm: TG2DataManager; const Transform: TG2Transform2; const EntityClass: CG2Scene2DEntity = nil): TG2Scene2DEntity;
  +    function CreatePrefab(const PrefabName: String; const Transform: TG2Transform2; const EntityClass: CG2Scene2DEntity = nil): TG2Scene2DEntity;
       procedure Save(const dm: TG2DataManager);
       procedure Load(const dm: TG2DataManager);
       procedure Load(const FileName: String);
  
positive.code:   Result.y := Round((v.y - _GridOffsetY) * _GridSizeYRcp);
  end;
  
  function TG2Scene2D.CreatePrefab(const dm: TG2DataManager; const Transform: TG2Transform2): TG2Scene2DEntity;
    procedure ProcessEntity(const Entity: TG2Scene2DEntity);
      var i: Integer;
    begin
  
negative.code:   end;
    var Def: array[0..3] of AnsiChar;
    var i, n: Integer;
    var CreateClass: CG2Scene2DEntity;
  begin
    if Assigned(EntityClass) then CreateClass := EntityClass else CreateClass := TG2Scene2DEntity;
    dm.ReadBuffer(@Def, 4);
    if Def = 'PF2D' then
    begin
      Result := CreateClass.Create(Self);
      Result.Load(dm);
      n := dm.ReadIntS32;
      for i := 0 to n - 1 do
  