public void Update() { if (!UsePlayerDamage) { return; } ICECreaturePlayerDamageObject _damage = GetPlayerDamage(); if (_damage != null) { if (m_ActiveDamage != _damage) { m_ActiveDamage = _damage; m_ActiveDamage.Init(); } } else if (m_ActiveDamage != null) { m_ActiveDamage.Reset(); m_ActiveDamage = null; } if (m_ActiveDamage != null) { if (m_ActiveDamage.IsReady(m_Controller)) { HandlePlayerDamage(m_ActiveDamage); } m_ActiveDamage.Update(); } }
private void HandlePlayerDamage(ICECreaturePlayerDamageObject _damage) { if (m_Controller == null || m_Controller.Creature.ActiveTarget == null || m_Controller.Creature.ActiveTarget.TargetGameObject == null) { return; } Health _health = null; if ((_health = m_Controller.Creature.ActiveTarget.TargetGameObject.GetComponentInParent <Health>()) != null) { _health.Damage(_damage.Damage, m_Controller.gameObject.transform.position, -m_Controller.gameObject.transform.forward * _damage.Force, m_Controller.gameObject); } }
private void DrawPlayerDamage(ICECreatureControl _control, ICECreaturePlayerDamageObject _damage) { EditorGUI.indentLevel++; _damage.Damage = ICEEditorLayout.Slider("Damage", "", _damage.Damage, 0.05f, 0, 100); //_damage.Type = (DamageType)ICEEditorLayout.EnumPopup( "Damage Type", "", _damage.Type ); EditorGUILayout.Separator(); _damage.DamageBehaviourModeKey = BehaviourEditor.BehaviourSelect(_control, "Trigger Behaviour", "", _damage.DamageBehaviourModeKey, "ATTACK"); _damage.Range = ICEEditorLayout.MaxDefaultSlider("Trigger Range", "", _damage.Range, 0.05f, 0, ref _damage.RangeMax, 2, ""); ICEEditorLayout.MinMaxGroup("Trigger Interval", "", ref _damage.IntervalMin, ref _damage.IntervalMax, 0, 60, 0.05f, ""); ICEEditorLayout.MinMaxGroup("Trigger Interruption Interval", "", ref _damage.InterruptionIntervalMin, ref _damage.InterruptionIntervalMax, 0, 60, 0.05f, ""); ICEEditorLayout.MinMaxGroup("Trigger Limiter", "", ref _damage.LimitMin, ref _damage.LimitMax, 0, 60, 1, ""); _damage.Force = ICEEditorLayout.DefaultSlider("Force", "", _damage.Force, 0.25f, 0, 100, 20.0f, ""); _damage.MuzzleFlash = (Renderer)EditorGUILayout.ObjectField("Muzzle Flash", _damage.MuzzleFlash, typeof(Renderer), true); _damage.Sound = (AudioClip)EditorGUILayout.ObjectField("Fire Sound", _damage.Sound, typeof(AudioClip), false); _damage.FxRandonPitch = ICEEditorLayout.DefaultSlider("Fire Fx Randon Pitch", "", _damage.FxRandonPitch, 0.001f, -1, 1, 0.86f, ""); EditorGUI.indentLevel--; }