public static async Task <(ResultMessage result, byte[] effectsHash, EffectProcessorsContainer container)> ProcessQuantumWithoutValidation(Domain.ExecutionContext context, MessageEnvelope envelope) { var messageType = envelope.Message.MessageType; if (messageType == MessageTypes.RequestQuantum) { var request = (RequestQuantum)envelope.Message; messageType = request.RequestMessage.MessageType; request.RequestMessage.AccountWrapper = context.AccountStorage.GetAccount(request.RequestMessage.Account); } context.QuantumProcessor.TryGetValue(messageType, out var processor); var container = new EffectProcessorsContainer(context, envelope, new DiffObject()); var processContext = processor.GetContext(container); var res = await processor.Process(processContext); context.QuantumStorage.AddQuantum(envelope, envelope.ComputeHash()); var effectsHash = new EffectsContainer { Effects = container.Effects }.ComputeHash(); return(res, effectsHash, container); }
public static async Task <(ResultMessage result, byte[] effectsHash, EffectProcessorsContainer container)> ProcessQuantumIsolated(this IntegrationTestEnvironment environment, MessageEnvelope envelope) { var context = new AlphaContext(environment.AlphaWrapper.Context.Settings, new MockStorage(), environment.AlphaWrapper.Context.StellarDataProvider); await context.Init(); //wait while all pending updates will be saved while (await environment.AlphaWrapper.Context.PersistenceManager.GetLastApex() != environment.AlphaWrapper.Context.QuantumStorage.CurrentApex) { Thread.Sleep(100); } await context.Setup(await environment.AlphaWrapper.Context.PersistenceManager.GetSnapshot(environment.AlphaWrapper.Context.QuantumStorage.CurrentApex)); var messageType = envelope.Message.MessageType; if (messageType == MessageTypes.RequestQuantum) { messageType = ((RequestQuantum)envelope.Message).RequestMessage.MessageType; } context.QuantumProcessor.TryGetValue(messageType, out var processor); var container = new EffectProcessorsContainer(context, envelope, new DiffObject()); var processContext = processor.GetContext(container); var res = await processor.Process(processContext); var effectsHash = new EffectsContainer { Effects = container.Effects }.ComputeHash(); return(res, effectsHash, container); }
public void Explode() { var deathExplosion = Instantiate(deathExplosionPrefab); deathExplosion.transform.position = transform.position; deathExplosion.transform.parent = EffectsContainer.GetEffectsContainer().transform; var main = deathExplosion.main; main.startColor = configuration.mainColor; var rigidBody = GetComponent <Rigidbody> (); var explosionBody = deathExplosion.GetComponent <Rigidbody> (); explosionBody.velocity = rigidBody.velocity; EventManager.GetEventManager().planetExplodedEvent.Invoke(this); if (configuration.isPlayer) { mainCamera.transform.parent = transform.parent; } Destroy(gameObject); }
private static void ExtractDataFromContainer(EffectsContainer container) { int nextEffectID = 0; //Instatiate VFX Parent GameObject parent = new GameObject("VFX Container"); foreach (EffectLinks links in container.Links) { // Instantiate VFX in Parent GameObject var effect = Object.Instantiate(links.Effect, parent.transform); //Add VFX to dictionary Effects.Add(nextEffectID, new Effect { VisualEffect = effect, MaxAmount = links.MaxAmount }); //Weapons foreach (EffectLinks.WeaponLinks weapon in links.Weapons) { //Add to weapon dictionary if (!WeaponEffects[weapon.WeaponType].ContainsKey(weapon.EventType)) { WeaponEffects[weapon.WeaponType].Add(weapon.EventType, nextEffectID); } #if UNITY_EDITOR else { Debug.LogWarning($"You tried to add multiple Visual effects for {weapon.WeaponType} {weapon.EventType} action. \n" + $" Current Effect: {Effects[WeaponEffects[weapon.WeaponType][weapon.EventType]].VisualEffect.name} \n" + $"Desired Effect: {links.Effect.name} \n"); } #endif } //Bullets foreach (EffectLinks.BulletLinks bullet in links.Bullets) { //Add to bullet dictionary if (!BulletEffects[bullet.BulletType].ContainsKey(bullet.CollisionType)) { BulletEffects[bullet.BulletType].Add(bullet.CollisionType, nextEffectID); } #if UNITY_EDITOR else { Debug.LogWarning($"You tried to add multiple Visual effects for {bullet.BulletType} {bullet.CollisionType} action. \n" + $" Current Effect: {Effects[BulletEffects[bullet.BulletType][bullet.CollisionType]].VisualEffect.name} \n" + $"Desired Effect: {links.Effect.name} \n"); } #endif } //Increment ID nextEffectID++; } }
byte[] GetEffectsData(EffectProcessorsContainer effectsContainer) { var resultEffectsContainer = new EffectsContainer { Effects = effectsContainer.Effects }; return(resultEffectsContainer.ToByteArray(buffer.Buffer)); }