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(); } }
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(); } }