You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

63 lines
2.3 KiB

  1. unit uengShaderPartEcho;
  2. {$mode objfpc}{$H+}
  3. {$I uengShaderFile.inc}
  4. interface
  5. uses
  6. Classes, SysUtils,
  7. uengShaderPart, uengShaderFileParser;
  8. type
  9. ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  10. TengShaderPartEcho = class(TengShaderPart)
  11. { Code Loading & Storage }
  12. private
  13. fName: String;
  14. protected
  15. function GetText: String; override;
  16. function ParseIntern(const aArgs: TengParseArgs; const aParams: TengTokenParameterList): String; override;
  17. { General }
  18. public
  19. class function GetTokenName: String; override;
  20. end;
  21. implementation
  22. uses
  23. uengShaderFileConstants, uengShaderFileTypes, uengShaderFileHelper;
  24. ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  25. //TengShaderPartEcho////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  26. ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  27. function TengShaderPartEcho.GetText: String;
  28. begin
  29. result := TOKEN_CHAR_BEGIN + GetTokenName + ' ' + fName + TOKEN_CHAR_END;
  30. end;
  31. ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  32. function TengShaderPartEcho.ParseIntern(const aArgs: TengParseArgs; const aParams: TengTokenParameterList): String;
  33. begin
  34. if (aParams[0].Name <> GetTokenName) then with aParams[0] do
  35. raise EengInvalidToken.Create(ClassName, Name, Line, Col, Filename);
  36. if (aParams.Count <> 2) then
  37. raise EengInvalidParamterCount.Create(GetTokenName, 2, Line, Col, Filename);
  38. result := '';
  39. with aParams[1] do begin
  40. if not IsValidIdentifier(Name) then
  41. raise EengInvalidIdentifier.Create(Name, Line, Col, Filename);
  42. fName := Name;
  43. end;
  44. end;
  45. ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  46. class function TengShaderPartEcho.GetTokenName: String;
  47. begin
  48. result := TOKEN_ECHO;
  49. end;
  50. end.