Exemple #1
0
    public override void _Process(float Delta)
    {
        Assert(MinAdsMultiplyer > 0 && MinAdsMultiplyer <= 1);
        if (Ads)
        {
            AdsMultiplyer = Clamp(AdsMultiplyer - (Delta * (1 - MinAdsMultiplyer) / AdsTime), MinAdsMultiplyer, 1);
        }
        else
        {
            AdsMultiplyer = Clamp(AdsMultiplyer + (Delta * (1 - MinAdsMultiplyer) / AdsTime), MinAdsMultiplyer, 1);
        }
        Cam.Fov = Game.Fov * AdsMultiplyer;

        ApplyLookVertical(0);
        var ToRemove = new List <Hitscan.AdditiveRecoil>();

        foreach (Hitscan.AdditiveRecoil Instance in ActiveAdditiveRecoil)
        {
            Instance.Life += Delta;
            if (Instance.Life > Instance.Length)
            {
                ToRemove.Add(Instance);
            }
        }
        foreach (Hitscan.AdditiveRecoil Instance in ToRemove)
        {
            ActiveAdditiveRecoil.Remove(Instance);
        }

        if (Inventory[InventorySlot] != null)
        {
            Items.ID Id = Inventory[InventorySlot].Id;
            ViewmodelItem.Mesh = Items.Meshes[Id];

            ShaderMaterial Mat = new ShaderMaterial();
            Mat.Shader = Items.TileShader;
            Mat.SetShaderParam("texture_albedo", Items.Textures[Id]);
            ViewmodelItem.MaterialOverride = Mat;

            ViewmodelItem.Show();

            {
                Items.IdInfo Info = Items.IdInfos[Inventory[InventorySlot].Id];
                if (IsPrimaryFiring && CurrentCooldown >= CurrentMaxCooldown && Info.UseDelegate != null && Info.FullAuto)
                {
                    Items.UseItem(Inventory[InventorySlot], this);
                }
            }
        }
        else
        {
            ViewmodelItem.Hide();
        }
    }
Exemple #2
0
    public override void _Process(float Delta)
    {
        if (!Possessed)
        {
            NetUpdateDelta += Delta;
            return;
        }

        if (Dying)
        {
            return;
        }

        Assert.ActualAssert(MinAdsMultiplier > 0 && MinAdsMultiplier <= 1);
        AdsMultiplier =
            Ads
                                ? Clamp(AdsMultiplier - (Delta * (1 - MinAdsMultiplier) / AdsTime), MinAdsMultiplier, 1)
                                : Clamp(AdsMultiplier + (Delta * (1 - MinAdsMultiplier) / AdsTime), MinAdsMultiplier, 1);

        Cam.Fov = Game.Fov * AdsMultiplier;

        float Length = Clamp(ViewmodelMomentum.Length() - Delta * ViewmodelMomentumFriction, 0, 1);

        ViewmodelMomentum = ViewmodelMomentum.Normalized() * Length;

        ViewmodelItem.RotationDegrees = new Vector3(
            SafeSign(ViewmodelMomentum.y) * ViewmodelMomentum.y * ViewmodelMomentum.y * MaxViewmodelItemRotation * AdsMultiplier,
            180 - SafeSign(ViewmodelMomentum.x) * ViewmodelMomentum.x * ViewmodelMomentum.x * MaxViewmodelItemRotation * AdsMultiplier,
            0
            );
        ViewmodelArmJoint.RotationDegrees = new Vector3(
            -SafeSign(ViewmodelMomentum.y) * ViewmodelMomentum.y * ViewmodelMomentum.y * MaxViewmodelArmRotation * AdsMultiplier,
            -SafeSign(ViewmodelMomentum.x) * ViewmodelMomentum.x * ViewmodelMomentum.x * MaxViewmodelArmRotation * AdsMultiplier,
            0
            );
        ViewmodelArmJoint.Translation = new Vector3(
            NormalViewmodelArmX * ((AdsMultiplier - MinAdsMultiplier) * (1 / (1 - MinAdsMultiplier))),
            ViewmodelArmJoint.Translation.y,
            ViewmodelArmJoint.Translation.z
            );

        ApplyLookVertical(0);
        var ToRemove = new List <Hitscan.AdditiveRecoil>();

        foreach (Hitscan.AdditiveRecoil Instance in ActiveAdditiveRecoil)
        {
            Instance.Life += Delta;
            if (Instance.Life > Instance.Length)
            {
                ToRemove.Add(Instance);
            }
        }
        foreach (Hitscan.AdditiveRecoil Instance in ToRemove)
        {
            ActiveAdditiveRecoil.Remove(Instance);
        }

        if (Inventory[InventorySlot] != null)
        {
            Items.ID Id = Inventory[InventorySlot].Id;
            ViewmodelItem.Mesh = Items.Meshes[Id];

            ShaderMaterial Mat = new ShaderMaterial();
            Mat.Shader = Items.TileShader;
            Mat.SetShaderParam("texture_albedo", Items.Textures[Id]);
            ViewmodelItem.MaterialOverride = Mat;

            ViewmodelItem.Show();

            {
                Items.IdInfo Info = Items.IdInfos[Inventory[InventorySlot].Id];
                if (IsPrimaryFiring && CurrentCooldown >= CurrentMaxCooldown && Info.UseDelegate != null && Info.FullAuto)
                {
                    Items.UseItem(Inventory[InventorySlot], this);
                }
            }
        }
        else
        {
            ViewmodelItem.Hide();
        }
    }