NorbiPeti
f403feb298
Removed BlockIdentifiers.OWNED_BLOCKS as the original got replaced with an array Added the correct group for each supported functional block Removed EntityFactory property from IEntitySerializer as it is provided on deserialization
53 lines
1.4 KiB
C#
53 lines
1.4 KiB
C#
using System;
|
|
|
|
using Unity.Jobs;
|
|
using RobocraftX.SimulationModeState;
|
|
using RobocraftX.StateSync;
|
|
using Svelto.ECS;
|
|
|
|
using GamecraftModdingAPI.Utility;
|
|
|
|
namespace GamecraftModdingAPI.Events
|
|
{
|
|
/// <summary>
|
|
/// Event emitter engine for switching to simulation mode.
|
|
/// </summary>
|
|
public class GameStateSimulationEmitterEngine : IEventEmitterEngine, IUnorderedInitializeOnTimeRunningModeEntered
|
|
{
|
|
public string Name { get; } = "GamecraftModdingAPIGameStateSimulationEventEmitter" ;
|
|
|
|
public EntitiesDB entitiesDB { set; private get; }
|
|
|
|
public int type { get; } = (int)EventType.SimulationSwitchedTo;
|
|
|
|
public bool isRemovable { get; } = false;
|
|
|
|
public IEntityFactory Factory { set; private get; }
|
|
|
|
public void Dispose() { }
|
|
|
|
public void Emit()
|
|
{
|
|
Logging.Log("Dispatching Simulation Switched To event");
|
|
if (Factory == null) { return; }
|
|
Factory.BuildEntity<ModEventEntityDescriptor>(ApiExclusiveGroups.eventID++, ApiExclusiveGroups.eventsExclusiveGroup)
|
|
.Init(new ModEventEntityStruct { type = type });
|
|
}
|
|
|
|
public void EmitIfSimMode()
|
|
{
|
|
if (entitiesDB.QueryUniqueEntity<SimulationModeStateEntityStruct>(SimulationModeStateExclusiveGroups.GAME_STATE_GROUP).nextSimulationMode == SimulationMode.TimeRunning)
|
|
{
|
|
Emit();
|
|
}
|
|
}
|
|
|
|
public JobHandle OnInitializeTimeRunningMode(JobHandle inputDeps)
|
|
{
|
|
Emit();
|
|
return inputDeps;
|
|
}
|
|
|
|
public void Ready() { }
|
|
}
|
|
}
|