Exemplo n.º 1
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);
    }
Exemplo n.º 2
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);
        }
    }
Exemplo n.º 3
0
    public bool AddNadeFrame(DemoParser parser, WeaponFiredEventArgs eventArgs)
    {
        if (eventArgs.Weapon.Class != EquipmentClass.Grenade)
        {
            return(false);
        }

        var nadeThrow = new NadeThrow()
        {
            NadeType  = eventArgs.Weapon.Weapon,
            Thrower   = eventArgs.Shooter.SteamID.ToString(),
            Position  = new Vector3(-eventArgs.Shooter.Position.X, eventArgs.Shooter.Position.Z, -eventArgs.Shooter.Position.Y),
            Direction = DemoInfoHelper.ViewAnglesToVector3(eventArgs.Shooter.ViewDirectionX, eventArgs.Shooter.ViewDirectionY)
        };

        NadeThrowFrame frame = null;

        if (NadeThrowFrames.Count != 0)
        {
            frame = NadeThrowFrames.Last();
        }
        if (frame == null || frame.Tick != parser.CurrentTick)
        {
            frame = new NadeThrowFrame()
            {
                Tick       = parser.CurrentTick,
                Round      = MatchInfoManager.Instance.Rounds.Last().Number,
                NadeThrows = new List <NadeThrow>()
                {
                    nadeThrow
                }
            };
            NadeThrowFrames.Add(frame);
        }
        else
        {
            frame.NadeThrows.Add(nadeThrow);
        }

        return(true);
    }
Exemplo n.º 4
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());
    }
    public WeaponFireGraphics CreateWeaponFireGraphics(WeaponFire weaponFire, Vector3 position, PlaybackMode playbackMode)
    {
        var weaponFireClone = Instantiate(WeaponFirePrefab);

        var weaponGraphics = weaponFireClone.GetComponent <WeaponFireGraphics>();

        weaponGraphics.Direction = playbackMode == PlaybackMode.ThreeD
            ? DemoInfoHelper.ViewAnglesToVector3(weaponFire.ViewX, weaponFire.ViewY)
            : DemoInfoHelper.ViewAnglesToVector3(weaponFire.ViewX, 0);

        weaponGraphics.HasEndPoint = false;

        position += PlayersManager.HeadOffset;

        if (playbackMode == PlaybackMode.TwoD)
        {
            position.y = 0.3f;
        }

        weaponFireClone.transform.position = weaponGraphics.StartPoint = position;

        return(weaponGraphics);
    }
 public void UpdateViewAngle(float viewX, float viewY)
 {
     TargetViewDirection = DemoInfoHelper.ViewAnglesToVector3(viewX, viewY);
 }