Exemple #1
0
    public void UpdateNadeProjectileFrame(NadeProjectileFrame frame, Map map)
    {
        _debugText.text = $"There should be {frame.NadeProjectiles.Count} nades";

        var leftOverGuids = _nadeProjectiles.Keys.ToList();

        for (int i = 0; i < frame.NadeProjectiles.Count; i++)
        {
            var nade = frame.NadeProjectiles[i];
            if (leftOverGuids.Contains(nade.Guid))
            {
                leftOverGuids.Remove(nade.Guid);
            }
            else
            {
                AddNadeProjectile(nade, map);
            }
            _nadeProjectiles[nade.Guid].UpdatePosition((DemoInfoHelper.SourceToUnityVector(nade.GetPos()) / PlaybackScale) - map.Offset);
            EnsureNadeHasTrail(nade.Guid);
        }

        foreach (Guid guid in leftOverGuids)
        {
            RemoveNadeProjectile(guid);
        }
    }
Exemple #2
0
    public void AddSmokeNadeEffect(DemoParser parser, SmokeEventArgs eventArgs)
    {
        if (!NadeEffectFrames.Any(n => n.Tick == parser.CurrentTick))
        {
            NadeEffectFrames.Add(new NadeEffectFrame()
            {
                Tick        = parser.CurrentTick,
                Round       = MatchInfoManager.Instance.Rounds.Last().Number,
                NadeEffects = new List <NadeEffect>()
            });
        }

        if (eventArgs.ThrownBy == null)
        {
            return;
        }

        var nadeEffect = new NadeEffect()
        {
            Guid     = Guid.NewGuid(),
            Duration = 18,
            Thrower  = eventArgs.ThrownBy.SteamID.ToString(),
            NadeType = EquipmentElement.Smoke,
            Position = (DemoInfoHelper.SourceToUnityVector(eventArgs.Position.Copy()) / GraphicsManager.PlaybackScale) - GraphicsManager.Instance.Map.Offset
        };

        NadeEffectFrames.Last().NadeEffects.Add(nadeEffect);
    }
Exemple #3
0
    private void AddNadeProjectile(NadeProjectile nade, Map map)
    {
        var pos = (DemoInfoHelper.SourceToUnityVector(nade.GetPos()) / PlaybackScale) - map.Offset;

        var offset = Vector3.zero;

        var nadeProjectileClone = Instantiate(NadeProjectilePrefab);

        nadeProjectileClone.name = $"NadeProjectile {nade.Guid}";

        nadeProjectileClone.transform.position = pos + offset;

        var nadeGraphics = nadeProjectileClone.GetComponent <NadeProjectileGraphics>();

        nadeGraphics.NadeType = nade.Type;
        nadeGraphics.Offset   = offset;
        nadeGraphics.Tickrate = GraphicsManager.Instance.Tickrate;

        _nadeProjectiles.Add(nade.Guid, nadeGraphics);
        NadeTrails.Add(nade.Guid, nadeGraphics.CreateTrail());
    }