private void OnEnable() { var gameObjectEntity = GetComponent <GameObjectEntity>(); var entityManager = gameObjectEntity.EntityManager; var abilityEntity = gameObjectEntity.Entity; // Default components entityManager.AddComponentData(abilityEntity, new CharacterAbility()); entityManager.AddComponentData(abilityEntity, new AbilityControl()); // Ability components var predictedState = new PredictedState { ammoInClip = settings.clipSize, fireRate = settings.minFireRate }; settings.projectileRegistryId = projectileType.registryId; entityManager.AddComponentData(abilityEntity, settings); entityManager.AddComponentData(abilityEntity, new LocalState()); entityManager.AddComponentData(abilityEntity, predictedState); entityManager.AddComponentData(abilityEntity, new InterpolatedState()); // Setup replicated ability var replicatedAbility = entityManager.GetComponentObject <ReplicatedAbility>(abilityEntity); replicatedAbility.predictedHandlers = new IPredictedDataHandler[2]; replicatedAbility.predictedHandlers[0] = new PredictedEntityHandler <AbilityControl>(entityManager, abilityEntity); replicatedAbility.predictedHandlers[1] = new PredictedEntityHandler <PredictedState>(entityManager, abilityEntity); replicatedAbility.interpolatedHandlers = new IInterpolatedDataHandler[1]; replicatedAbility.interpolatedHandlers[0] = new InterpolatedEntityHandler <InterpolatedState>(entityManager, abilityEntity); }
public override Entity Create(EntityManager entityManager, List <Entity> entities) { var entity = CreateCharBehavior(entityManager); entities.Add(entity); // Ability components var internalState = new InternalState { rayQueryId = -1 }; var predictedState = new PredictedState { action = Action.Idle, ammoInClip = settings.clipSize, COF = settings.minCOF, }; entityManager.AddComponentData(entity, settings); entityManager.AddComponentData(entity, internalState); entityManager.AddComponentData(entity, predictedState); entityManager.AddComponentData(entity, new InterpolatedState()); return(entity); }
public static void DecreaseCone(ref PredictedState state, ref Settings settings, float deltaTime) { // Decrease cone if (state.action != Phase.Fire) { state.COF -= settings.COFData.DecreaseVel * deltaTime; if (state.COF < settings.COFData.min) { state.COF = settings.COFData.min; } } }
public override Entity Create(EntityManager entityManager, List <Entity> entities) { var entity = CreateCharBehavior(entityManager); entities.Add(entity); // Ability components var predictedState = new PredictedState { ammoInClip = settings.clipSize, fireRate = settings.minFireRate }; entityManager.AddComponentData(entity, settings); entityManager.AddComponentData(entity, new LocalState()); entityManager.AddComponentData(entity, predictedState); entityManager.AddComponentData(entity, new InterpolatedState()); return(entity); }
static public Action GetCommandRequest(ref PredictedState predictedState, ref Settings settings, ref UserCommand command) { if (command.reload && predictedState.ammoInClip < settings.clipSize) { return(Action.Reload); } var isIdle = predictedState.action == Action.Idle; if (isIdle) { if (command.primaryFire && predictedState.ammoInClip == 0) { return(Action.Reload); } } return(command.primaryFire ? Action.Fire : Action.Idle); }
public static State GetPreferredState(ref PredictedState predictedState, ref Settings settings, ref UserCommand command) { if (command.buttons.IsSet(settings.reloadButton) && predictedState.ammoInClip < settings.clipSize) { return(State.Reload); } var isIdle = predictedState.action == State.Idle; if (isIdle) { if (command.buttons.IsSet(settings.fireButton) && predictedState.ammoInClip == 0) { return(State.Reload); } } return(command.buttons.IsSet(settings.fireButton) ? State.Fire : State.Idle); }
private void OnEnable() { var gameObjectEntity = GetComponent <GameObjectEntity>(); var entityManager = gameObjectEntity.EntityManager; var abilityEntity = gameObjectEntity.Entity; // Default components entityManager.AddComponentData(abilityEntity, new CharacterAbility()); entityManager.AddComponentData(abilityEntity, new AbilityControl()); // Ability components var localState = new LocalState { rayQueryId = -1 }; var predictedState = new PredictedState { phase = Phase.Idle, ammoInClip = settings.clipSize, COF = settings.minCOF, }; entityManager.AddComponentData(abilityEntity, settings); entityManager.AddComponentData(abilityEntity, localState); entityManager.AddComponentData(abilityEntity, predictedState); entityManager.AddComponentData(abilityEntity, new InterpolatedState()); // Setup replicated ability var replicatedAbility = entityManager.GetComponentObject <ReplicatedAbility>(abilityEntity); replicatedAbility.predictedHandlers = new IPredictedDataHandler[2]; replicatedAbility.predictedHandlers[0] = new PredictedEntityHandler <AbilityControl>(entityManager, abilityEntity); replicatedAbility.predictedHandlers[1] = new PredictedEntityHandler <PredictedState>(entityManager, abilityEntity); replicatedAbility.interpolatedHandlers = new IInterpolatedDataHandler[1]; replicatedAbility.interpolatedHandlers[0] = new InterpolatedEntityHandler <InterpolatedState>(entityManager, abilityEntity); }
public bool VerifyPrediction(ref PredictedState state) { return(true); }
public static Phase GetPreferredState(ref PredictedState predictedState, ref Settings settings, in Ability.EnabledAbility enabledAbility)