Advertisement
soulassassin547

List Model and Object Bounds (TESV/xEdit)

Sep 7th, 2018
140
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pascal 1.04 KB | None | 0 0
  1. {
  2.   Output meshes used in selected records
  3.   Also output X,Y object bounds
  4. }
  5. unit UserScript;
  6.  
  7. var
  8.   slModels: TStringList;
  9.  
  10. function Initialize: integer;
  11. begin
  12.   // list of models, ignore duplicated ones
  13.   slModels := TStringList.Create;
  14.   slModels.Sorted := True;
  15.   slModels.Duplicates := dupIgnore;
  16. end;
  17.  
  18. function Process(e: IInterface): integer;
  19. var
  20.   s: string;
  21.   Xi: integer;
  22.   Yi: integer;
  23.   i: integer;
  24. begin
  25.   Result := 0;
  26.  
  27.   Xi := GetElementNativeValues(e,'OBND\X2');
  28.   Yi := GetElementNativeValues(e,'OBND\Y2');
  29.  
  30.   // only string fields can contain filenames
  31.   i := DefType(e);
  32.  
  33.   s := GetEditValue(e);
  34.  
  35.   if (i = dtString) or (i = dtLenString) then begin
  36.  
  37.     if SameText(Copy(s, Length(s) - 3, 4), '.nif') then
  38.       slModels.Add(IntToStr(Xi) + ' ' + IntToStr(Yi) + ' ' + s);
  39.   end;
  40.  
  41.   // recursively process all child elements
  42.   for i := 0 to ElementCount(e) - 1 do
  43.     Process(ElementByIndex(e, i));
  44.  
  45. end;
  46.  
  47. function Finalize: integer;
  48. begin
  49.   AddMessage(slModels.Text);
  50.   slModels.Free;
  51. end;
  52.  
  53. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement