Mod service: EntityService

## Available commands:

```
void                            		Dash( Exor::Entity::Id entity, Exor::Entity::Id dash_item );
void                            		StopDash( Exor::Entity::Id entity);
bool                            		IsDashing( Exor::Entity::Id entity );
void                            		SendBuildingBuildEvent( Exor::Entity::Id entity, bool upgrade );
void                            		SendBuildingSellEndEvent( Exor::Entity::Id entity );
void                            		ShowTimeoutSoundEvent( Exor::Entity::Id entity, float timeOut, const char * sound, bool positive );
void                            		ChangeToWreck( Exor::Entity::Id entity, const Exor::String & damageType, float damagePercentage, const Exor::String & wreckMaterial, float minWreckSpeed );
void                            		RequestDestroyPattern( Exor::Entity::Id entity, const Exor::String & destroyPattern );
void                            		RequestDestroyPattern( Exor::Entity::Id entity, const Exor::String & destroyPattern, bool destroyEntity );
void                            		ChangeAIGroupsToAggressive( Exor::Entity::Id aroundEntity, float radius, bool disbandGroup );
void                            		MarkEntityAsLootContainer( Exor::Entity::Id entity, WeaponRarity rarity );
void                            		ChangeInteractiveEntityStatus( Exor::Entity::Id entity , bool enabled );
float                           		GetUnitCurrentSpeed( Exor::Entity::Id entity );
void                            		EnableVegetationChain( Exor::Entity entity );
void                            		DisableVegetationChain( Exor::Entity entity );
void                            		RemovePropsInEntityBounds( Exor::Entity::Id entity );
void                            		RemoveTypesInEntityBounds( Exor::Entity::Id entity, const Exor::String & types );
void                          		  	CombineDatabase( Exor::Entity::Id entity, Exor::Database * db );
void                            		HighlightEntity( Exor::Entity ent, float time );
bool                            		EnsureGatherableComponent( Exor::Entity entity );
std::pair<Exor::String, float>  		GetResourceAmount( Exor::Entity entity );
void                            		ChangeResourceAmount( Exor::Entity entity, float value );
Exor::Vector< std::pair<Exor::String, float> > 	GetGatherableResources( Exor::Entity entity );
float                           		GetGatherResourceAmount( Exor::Entity entity, const Exor::String resourceName );
void                            		ChangeGatherResourceAmount( Exor::Entity entity, const Exor::String resourceName, float value );
void                            		AddEntityMod( Exor::Entity entity, const Exor::String & name, const Exor::String & modType, const Exor::String & modValue );
void                            		RemoveEntityMod( Exor::Entity entity, const Exor::String & name, const Exor::String & modType );
void                            		SetRotateToTargetAngularSpeed( Exor::Entity entity, float angularSpeed );
EntityIds               			GetChildren( Entity::Id entity, bool recursive ) const;
Entity::Id              			GetChildByName( Entity::Id entity, const Exor::String & name ) const;
Entity::Id              			GetParent( Entity::Id entity );
String                  			GetName( Entity::Id entity );
String                  			GetGroup( Entity::Id entity );
String                  			GetType( Entity::Id entity );
String                  			GetBlueprintName( Entity::Id entity );
TeamId                  			GetTeam( Entity::Id entity );
void                    			SetName( Entity::Id entity, const String & name );
void                    			SetGroup( Entity::Id entity, const String & name );
void                    			SetParent( Entity::Id entity, Entity::Id parent );
float                   			GetPositionX( Entity::Id entity ) const;
float                   			GetPositionY( Entity::Id entity ) const;
float                   			GetPositionZ( Entity::Id entity ) const;
Vector3                 			GetPosition( Entity::Id entity ) const;
Vector3                                         GetLocalPosition( Entity::Id entity )
Vector3                 			GetScale( Entity::Id entity ) const;
Vector3                 			GetBoundsSize( Entity::Id entity ) const;
Entity::Id         NOT-YET-WORKING-ASK-LUKASZ	SpawnEntity( IdString blueprint, const Vector3 & pos, const Quaternion & orient, TeamId team );
Entity::Id              			SpawnEntity( const String & blueprint, const Vector3 & pos, TeamId team );
Entity::Id	        			SpawnEntity( const String & blueprint, float x, float y, float z, const String & team );
Entity::Id	        			SpawnEntity( const String & blueprint, const String & spawnPointName, const String & team );
Entity::Id	        			SpawnEntity( const String & blueprint, Entity::Id entity, const String & team );
Entity::Id	        			SpawnEntity( const String & blueprint, Entity::Id entity, TeamId team );
Entity::Id	        			SpawnEntity( const String & blueprint, Entity::Id entity, const String & attachment, const String & team );
Entity::Id	        			SpawnEntity( const String & blueprint, Entity::Id entity, const String & attachment, TeamId team );
Entity::Id              			SpawnAndAttachEntity( const String & blueprint, Entity::Id entity );
Entity::Id              			SpawnAndAttachEntity( const String & blueprint, Entity::Id entity, const String & attachment, const String & team );
Entity::Id              			SpawnAndAttachEntity( Entity::Id entity, const String & attachment);
void                    			SpawnEntities( const String & blueprint, const String & spawnPointName, const String & team );
void                    			SpawnEntities( const String & blueprint, const String & spawnPointName, const String & team, const String &groupName );
Entity::Id              			SpawnEntity( IdString blueprint, const Vector3 & pos, const Quaternion & orient );
Entity::Id              			SpawnEntity( Entity::Id target );
Entity::Id              			CreateEntity( IdString blueprint );
void                    			AttachEntity( Entity::Id entity, Entity::Id parent );
void                    			AttachEntity( Entity::Id entity, Entity::Id parent, const String & attachment );
void                    			DetachEntity( Entity::Id entity );
void                    			CreateLifeTime( Entity::Id entity, float time, const String & type );
float                   			GetLifeTime( Entity::Id entity );
void                    			RemoveLifeTime( Entity::Id entity );
void                    			CreateOrSetLifetime( Entity::Id entity, float time, const String & type );
void                    			EnableCollisions( Entity::Id entity );
void                    			DisableCollisions( Entity::Id entity );
void                    			ChangeGravityAffected( Entity::Id entity, bool value );
void                    			EnableCollisionsByGroup( Entity::Id entity, const String & group );
void                    			DisableCollisionsByGroup( Entity::Id entity, const String & group );
void                    			EnableCollision( Entity::Id entity, const String & name );
void                    			DisableCollision( Entity::Id entity, const String & name );
void                    			ChangeToDynamic( Entity::Id entity, Exor::String physicMaterialName, Exor::String physicGroupId, int dominance, float mass, float damping, float size );
void                    			PhysicsSleepNotify( Entity::Id entity, bool flag );
void                    			PhysicsSleep( Entity::Id entity );
void                    			PhysicsWakeUp( Entity::Id entity );
Exor::Aabb              			GetPhysicsWorldAabb(Entity::Id entity, int objectIdx );
void                    			RemoveComponent( Entity::Id entity, const String & name );
bool                    			HasComponent(Entity::Id entity, const String& name);
void                    			DissolveEntity( Entity::Id entity, float duration );
void                    			DissolveEntity( Entity::Id entity, float duration, float delay );
void                    			RemoveEntity( Entity::Id entity );
void                    			RemoveEntity( Entity::Id entity, float delay );
bool                    			IsAlive( Entity::Id entity );
void                    			RegisterLua( Lua & lua ) override;
void                    			Rotate( Entity::Id, float x, float y, float z, float angle);
void                    			Teleport( Entity::Id entity, Entity::Id toEntity );
void                    			SetScale( Entity::Id entity, float x, float y, float z );
void                    			SetPosition( Entity::Id entity, float x, float y, float z );
void                    			SetPosition( Entity::Id entity, Vector3 pos );
void                    			SetOrientation( Entity::Id entity, float x, float y, float z, float angle );
void                    			SetPhysicsScale( Entity::Id entity, float x, float y, float z );
void                    			SetNavMeshScale( Entity::Id entity, float x, float y, float z );
void                    			SetForward( Entity::Id entity, float x, float y, float z );
float                   			GetAngleBetween( Entity::Id entity1, Entity::Id entity2 );
float                   			GetAngleTo( Entity::Id entity1, Entity::Id entity2 );
float                   			GetDistanceBetween( Entity::Id entity1, Entity::Id entity2 );
float                   			GetDistance2DBetween( Entity::Id entity1, Entity::Id entity2 );
bool                    			HasInArc( Entity::Id entity1, Entity::Id entity2, float minAngle, float maxAngle );
TeamId                  			GetTeam( const String & team );
TeamMask                			GetTeamMask( const String & mask );
void                    			SetTeam( Entity::Id entity, const String & team );
bool                    			HasTeam( Entity::Id entity );
bool                    			CompareTeam( Entity::Id entity, const String & team );
bool                    			IntersectTeamMask( Entity::Id entity, const String & teamMask );
void                    			ChangeCharacterControllerGroupId( Entity::Id entity, const String & groupId );
void                    			ChangePhysicsGroupId( Entity::Id entity, const String & groupId );
void                    			ChangeType( Entity::Id entity, const String & type );
bool                    			CompareType( Entity::Id entity, const String & type );
bool                    			CompareType( Entity::Id entity1, Entity::Id entity2 );
Exor::String            			GetMeshName( Entity::Id entity );
void                    			ChangeMesh( Entity::Id entity, Exor::String meshName );
void                    			ChangeMaterial( Entity::Id entity, const String & materialName );
void                    			SetMaterial( Entity::Id entity, const String & materialName, const String & slot );
void                    			SetSubMeshMaterial( Entity::Id entity, const String & materialName, int submesh, const String & slot );
void                    			RemoveMaterial( Entity::Id entity, const String & slot );
bool                    			IsSkinned( Entity::Id entity );
String                  			GetOverridenMaterial( Entity::Id entity );
Vector<String>          			GetOverridenMaterials( Entity::Id entity );
void                    			FadeEntityIn( Entity::Id entity, float timer );
void                    			FadeEntityOut( Entity::Id entity, float timer );
void                    			SetVisible( Entity::Id entity, bool visible );
void                    			SetGraphicsUniform( Entity::Id entity, const String & uniformName, float x );
void                    			SetSubmeshGraphicsUniform( Entity::Id entity, int submesh, const String & uniformName, float x );
void                    			SetGraphicsUniform( Entity::Id entity, const String & uniformName, float x, float y );
void                    			SetGraphicsUniform( Entity::Id entity, const String & uniformName, float x, float y, float z );
void                    			SetGraphicsUniform( Entity::Id entity, const String & uniformName, float x, float y, float z, float w );
Entity::Id              			CullNavMeshUnderEntity( Entity::Id entity, float radius );
void                    			SetLightRange( Entity::Id entity, float range );
void                    			SetLightColor( Entity::Id entity, float r, float g, float b, float a );
void                    			SetLightShadowCaster( Entity::Id entity, bool shadowCaster );
static int              			QueueEvent( lua_State * L );
Optional<TypeInstance>  			GetComponent( Exor::Entity entity, const char * componentName );
Optional<TypeInstance>  			CreateComponent( Exor::Entity entity, const char * componentName );
ComponentId             			GetComponentId( const char* componentName );
void                    			LoadMissingDatabaseKeysFromBlueprint( Exor::Entity entity );
                                                GetBlueprintDatabase( entity )
                                                GetBlueprintDatabase( blueprint_name: string )
                                                CreateQuickSandSinkMovement( entity, float duration)
                                                GetWorldTransform( entity )
void                                            RemoveGraphicsUniform( entity: number, uniform_name: string )
                                                SetEntityWorldTransform( entity, transform )

```