anchor.diff:    end;
   end;
   
  -function TG2Scene2D.CreatePrefab(const PrefabName: String; const Transform: TG2Transform2): TG2Scene2DEntity;
  +function TG2Scene2D.CreatePrefab(
  +  const PrefabName: String;
  +  const Transform: TG2Transform2;
  +  const EntityClass: CG2Scene2DEntity
  +): TG2Scene2DEntity;
     var dm: TG2DataManager;
   begin
     dm := TG2DataManager.Create(PrefabName, dmAsset);
     try
  -    Result := CreatePrefab(dm, Transform);
  +    Result := CreatePrefab(dm, Transform, EntityClass);
     finally
       dm.Free;
     end;
  
positive.code:     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;
      procedure Save(const dm: TG2DataManager);
      procedure Load(const dm: TG2DataManager);
      procedure Load(const FileName: String);
  
negative.code:   Result.y := Round((v.y - _GridOffsetY) * _GridSizeYRcp);
  end;
  
  function TG2Scene2D.CreatePrefab(
    const dm: TG2DataManager;
    const Transform: TG2Transform2;
    const EntityClass: CG2Scene2DEntity
  ): TG2Scene2DEntity;
    procedure ProcessEntity(const Entity: TG2Scene2DEntity);
      var i: Integer;
    begin
  