From 8d19be1c0e506c6e3f9e5e2e7154ca81af077097 Mon Sep 17 00:00:00 2001 From: Garux Date: Wed, 7 Apr 2021 03:06:38 +0300 Subject: [PATCH] * fgd: support studio("display/model/path") and flags(Angles) --- radiant/eclass_fgd.cpp | 27 ++++++++++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) diff --git a/radiant/eclass_fgd.cpp b/radiant/eclass_fgd.cpp index 2b4871c6..bb39cd49 100644 --- a/radiant/eclass_fgd.cpp +++ b/radiant/eclass_fgd.cpp @@ -184,7 +184,6 @@ void EntityClassFGD_parseClass( Tokeniser& tokeniser, bool fixedsize, bool isBas // hl2 below else if ( string_equal( property, "sphere" ) || string_equal( property, "sweptplayerhull" ) - || string_equal( property, "studio" ) || string_equal( property, "studioprop" ) || string_equal( property, "lightprop" ) || string_equal( property, "lightcone" ) @@ -195,6 +194,17 @@ void EntityClassFGD_parseClass( Tokeniser& tokeniser, bool fixedsize, bool isBas } ASSERT_MESSAGE( EntityClassFGD_parseToken( tokeniser, ")" ), PARSE_ERROR ); } + else if ( string_equal( property, "studio" ) ) { + ASSERT_MESSAGE( EntityClassFGD_parseToken( tokeniser, "(" ), PARSE_ERROR ); + const char *token = tokeniser.getToken(); + if ( string_equal( token, ")" ) ) { + tokeniser.ungetToken(); + } + else{ + entityClass->m_modelpath = token; + } + ASSERT_MESSAGE( EntityClassFGD_parseToken( tokeniser, ")" ), PARSE_ERROR ); + } else if ( string_equal( property, "line" ) || string_equal( property, "cylinder" ) ) { ASSERT_MESSAGE( EntityClassFGD_parseToken( tokeniser, "(" ), PARSE_ERROR ); @@ -226,6 +236,21 @@ void EntityClassFGD_parseClass( Tokeniser& tokeniser, bool fixedsize, bool isBas } else if ( string_equal( property, "halfgridsnap" ) ) { } + else if ( string_equal( property, "flags" ) ) { + ASSERT_MESSAGE( EntityClassFGD_parseToken( tokeniser, "(" ), PARSE_ERROR ); + for (;; ) + { + const char* base = tokeniser.getToken(); + if ( string_equal( base, ")" ) ) { + break; + } + else if ( !string_equal( base, "," ) ) { + if( string_equal_nocase( base, "Angle" ) ){ + entityClass->has_angles = true; + } + } + } + } else { ERROR_MESSAGE( PARSE_ERROR );