propertymodifiers.c 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. class PropertyModifiers
  2. {
  3. vector m_RecoilModifiers;
  4. vector m_SwayModifiers;
  5. vector m_SightMisalignment;
  6. float m_BarrelLength;
  7. //ref Timer test_timer;
  8. ItemBase m_OwnerItem;
  9. float m_Weapon
  10. void PropertyModifiers(ItemBase owner)
  11. {
  12. //test_timer = new Timer();
  13. //test_timer.Run(5, this, "Refresh", NULL, true);
  14. m_OwnerItem = owner;
  15. UpdateModifiers();
  16. m_BarrelLength = CalculateBarrelLength(owner);
  17. }
  18. //! Get Barrel Legth in mm
  19. float GetBarrelLength()
  20. {
  21. //return m_BarrelLength * 1000:
  22. return CalculateBarrelLength(m_OwnerItem) * 1000;
  23. }
  24. float CalculateBarrelLength(ItemBase owner)
  25. {
  26. vector usti_hlavne_position = owner.GetSelectionPositionLS( "usti hlavne" );//usti hlavne
  27. vector konec_hlavne_position = owner.GetSelectionPositionLS( "konec hlavne" );//konec hlavne
  28. usti_hlavne_position = owner.ModelToWorld(usti_hlavne_position);
  29. konec_hlavne_position = owner.ModelToWorld(konec_hlavne_position);
  30. return vector.Distance(usti_hlavne_position, konec_hlavne_position);
  31. }
  32. void UpdateModifiers()
  33. {
  34. m_RecoilModifiers = GetModifierRaw(m_OwnerItem, "recoilModifier");
  35. m_SwayModifiers = GetModifierRaw(m_OwnerItem, "swayModifier");
  36. m_SightMisalignment = GetModifierRaw(m_OwnerItem, "sightMisalignmentModifier");
  37. for (int i = 0; i < m_OwnerItem.GetInventory().AttachmentCount(); i++)
  38. {
  39. ItemBase attachment = ItemBase.Cast(m_OwnerItem.GetInventory().GetAttachmentFromIndex(i));
  40. vector temp_value = PropertyModifiers.GetModifierRaw(attachment, "recoilModifier");
  41. m_RecoilModifiers[0] = m_RecoilModifiers[0] * temp_value[0];
  42. m_RecoilModifiers[1] = m_RecoilModifiers[1] * temp_value[1];
  43. m_RecoilModifiers[2] = m_RecoilModifiers[2] * temp_value[2];
  44. temp_value = PropertyModifiers.GetModifierRaw(attachment, "swayModifier");
  45. m_SwayModifiers[0] = m_SwayModifiers[0] * temp_value[0];
  46. m_SwayModifiers[1] = m_SwayModifiers[1] * temp_value[1];
  47. m_SwayModifiers[2] = m_SwayModifiers[2] * temp_value[2];
  48. temp_value = PropertyModifiers.GetModifierRaw(attachment, "sightMisalignmentModifier");
  49. m_SightMisalignment[0] = m_SightMisalignment[0] * temp_value[0];
  50. m_SightMisalignment[1] = m_SightMisalignment[1] * temp_value[1];
  51. m_SightMisalignment[2] = m_SightMisalignment[2] * temp_value[2];
  52. }
  53. }
  54. static vector GetModifierRaw(ItemBase item, string modifier_name, vector value = "1 1 1")
  55. {
  56. if( item.ConfigIsExisting(modifier_name) )
  57. {
  58. value = item.ConfigGetVector(modifier_name);
  59. }
  60. return value;
  61. }
  62. }