Mod service: BuildingService

## Available commands:

```
void            	EnableBuilding( Exor::Entity ent );
void            	DisableBuilding( Exor::Entity ent );
void            	DisableSellOption( Exor::Entity ent );
void            	EnableSellOption( Exor::Entity ent );
bool            	IsOnResource( Exor::Entity ent , const Exor::String & resource );
Exor::Entity    	AttachMissingResourceIcon( Exor::Entity ent , const Exor::String & resource, bool withoutMinimap  );
Exor::Entity    	AttachGuiTimer( Exor::Entity ent, float time, bool removeAfter );
Exor::Entity    	CreateGuiTimer( Exor::Entity ent, float time);
void            	SetGuiTimer( Exor::Entity ent, float time );
void            	SetGuiTimerLimit( Exor::Entity ent, float limit );
void           		PauseGuiTimer( Exor::Entity ent );
void            	ResumeGuiTimer( Exor::Entity ent );
void            	RemoveGuiTimer( Exor::Entity ent );
int             	GetBuildingLevel( Exor::Entity ent );
void            	EnableDiscoverableSystem( bool value );
bool            	TryDecreaseResourceByEntity( Exor::Entity entity, Exor::String resource , float amount );
float           	CalculateBuildTime( Exor::Entity entity );
bool            	IsSpaceOccupied( const Exor::Vector3 & pos, Exor::String physicsCheck, Exor::String excludedTerrainType );
bool            	IsBuildingSpaceOccupied( Exor::Entity building );
void            	EnablePhysics( Exor::Entity building );
float           	GetEnergyAmount( Exor::Entity building );
bool            	IsResourceConnected( Exor::Entity entity, Exor::String resource );
float           	GetResourceConnected( Exor::Entity entity, Exor::String resource );
void            	DecreaseEnergyAmount( Exor::Entity building, float amount );
void            	AddConverterEfficientyModifier( Exor::Entity building, float value, Exor::StringHash name );
void            	RemoveConverterEfficientyModifier( Exor::Entity building, Exor::StringHash name );
void            	AddConverterCostModifier( Exor::Entity building, float value, Exor::String name );
void            	RemoveConverterCostModifier( Exor::Entity building, Exor::String name );
void            	ClearResourceGraphs( Exor::Entity building );
float           	GetGeothermalPowerModificator();
float           	GetWindPowerModificator();
float          		GetSolarPowerModificator();
void            	SetResourceConverterEfficientyModificator( Exor::Entity building, float value, Exor::String name );
void            	RemoveResourceConverterEfficientyModificator( Exor::Entity building, Exor::String name );
BuildingMode    	GetBuildingMode( Exor::Entity::Id building );
bool            	IsBuildingPowered( Exor::Entity::Id building );
bool            	IsResourceSupplied( Exor::Entity::Id building );
bool            	IsWorking( Exor::Entity::Id building );
Exor::EntityIds 	GetFinishedBuildingByName( Exor::Entity target, const char * name, float radius );
Exor::EntityIds 	GetFinishedBuildingByBp( Exor::Entity target, const char * bp, float radius );
Exor::EntityIds 	GetFinishedBuildingByType( Exor::Entity target, const char * type, float radius );
Exor::EntityIds 	GetFinishedBuildingByName(  const char * name );
Exor::EntityIds 	GetFinishedBuildingByBp(  const char * bp );
Exor::EntityIds 	GetFinishedBuildingByType(  const char * type );
Exor::EntityIds 	GetResourceVeins( Exor::Entity::Id building, const char * resourceName );
Exor::StringVector 	GetMissingResources( Exor::Entity::Id building ) const;
bool            	HasBuildingWithBp( Exor::String bp );
unsigned int    	GetBuildingByBpCount( Exor::String bp );
bool            	HasBuildingWithName( Exor::String name );
unsigned int    	GetBuildingByNameCount( Exor::String name );
unsigned int    	GetBuildingByTypeCount( Exor::String type );
Exor::String    	GetPipeResourceClaimed( Exor::Entity ent );
Exor::String    	GetBuildingName( Exor::Entity end );
bool            	IsBuildingFinished( Exor::Entity ent );
void            	IncreaseBuildingLimits( Exor::String name, unsigned int limit );
void            	DecreaseBuildingLimits( Exor::String name, unsigned int limit );
void            	CreateRadarComponent( Exor::Entity ent, float radius );
Exor::String    	CreateFloraCultivatorComponent( Exor::Entity ent, Exor::String prefab );
bool            	CanAffordRepair( Exor::Entity ent, float amount );
void            	RepairBuilding( Exor::Entity ent, float amount );
Exor::Entities  	SpawnCultivatorSaplingsAt( Exor::Entity ent, Exor::Vector3 position );
Exor::Entity            GetMeshEntity( Exor::Entity ent )
bool                    IsFloor( Exor::Entity ent )
Exor::String            GetBuildingType( Exor::Entity ent );
bool                    IsBuildingAvailable( Exor::String blueprint)
void                    SetBuildingLastLevel( baseName, lvlName)
void                    FindBaseBuilding( const Exor::String & blueprint )
Exor::Vector3           GetBuildingGridSize( Exor::Entity::Id entity )
void                    UnlockBuilding( Exor::StringView blueprint );

```