void ReturnDamage(SHDamageObject pDamage) { if (null == pDamage) { return; } Single.ObjectPool.Return(pDamage.gameObject); }
public void DelDamage(SHDamageObject pDamage) { if (null == pDamage) { return; } if (true == m_dicDelDamages.ContainsKey(pDamage.m_pInfo.m_strID)) { return; } m_dicDelDamages.Add(pDamage.m_pInfo.m_strID, pDamage); }
void CheckCollision(SHDamageObject pDamage) { if (null == pDamage) { return; } if (false == pDamage.IsCheckCrash()) { return; } SHUtils.ForToList(GetTargets(pDamage), (pTarget) => { var pDamageCollider = pDamage.GetCollider(); var pTargetCollider = pTarget.GetCollider(); if ((null == pDamageCollider) || (null == pTargetCollider)) { return; } var bIsCollistion = false; var bBounds = pDamage.m_pBeforeBounds; for (float fRatio = 0.0f; fRatio <= 1.0f; fRatio += 0.1f) { bBounds.center = SHMath.Lerp(pDamage.m_pBeforeBounds.center, pDamageCollider.bounds.center, fRatio); if (true == bBounds.Intersects(pTargetCollider.bounds)) { bIsCollistion = true; break; } } if (false == bIsCollistion) { return; } pTarget.OnCrashDamage(pDamage); pDamage.OnCrashDamage(pTarget); }); }
public override void OnGUI(Rect pRect, SerializedProperty pProperty, GUIContent pLabel) { if (SerializedPropertyType.String != pProperty.propertyType) { EditorGUI.LabelField(pRect, "ERROR:", "May only apply to type string"); return; } if (false == pProperty.displayName.Contains("Element")) { EditorGUI.LabelField(pRect, "ERROR:", "May only apply to type List<string>"); return; } m_iIndex = int.Parse(pProperty.displayName.Split(' ')[1]); if (pProperty.serializedObject.targetObject is SHDamageObject) { Component pComponent = pProperty.serializedObject.targetObject as Component; m_pDamageObject = pComponent.GetComponent <SHDamageObject>(); } if (null == m_pDamageObject) { EditorGUI.LabelField(pRect, "ERROR:", "Must have reference to a SHDamage_Unit.SHTarget"); return; } string strButtonName = pProperty.stringValue; if (true == string.IsNullOrEmpty(strButtonName)) { strButtonName = "Select To Tag"; } pRect = EditorGUI.PrefixLabel(pRect, pLabel); if (GUI.Button(pRect, strButtonName, EditorStyles.popup)) { Selector(pProperty); } }
List <SHMonoWrapper> GetTargets(SHDamageObject pDamage) { if (null == pDamage) { return(null); } var pTargets = new List <SHMonoWrapper>(); SHUtils.ForToDic(m_dicUnits, (pKey, pValue) => { SHUtils.ForToList(pValue, (pUnit) => { if (false == pDamage.IsTarget(pUnit.tag)) { return; } pTargets.Add(pUnit); }); }); return(pTargets); }
public void OnEventToCollision(SHDamageObject pDamage) { Debug.LogFormat("SHRnD_Damage::OnEventToCollision() - Event On Collision : {0}", pDamage.m_pInfo.m_strID); }
public void OnEventToDelete(SHDamageObject pDamage) { Debug.LogFormat("SHRnD_Damage::OnEventToDelete() - Event On Delete : {0}", pDamage.m_pInfo.m_strID); }
public void SendEventToCollision(SHDamageObject pDamage) { SHUtils.ForToList(m_pEventToCollision, (pCallback) => pCallback(pDamage)); }
public void SendEventToDelete(SHDamageObject pDamage) { SHUtils.ForToList(m_pEventToDelete, (pCallback) => pCallback(pDamage)); }
public void OnEventToDeleteDamage(SHDamageObject pDamage) { DelDamage(pDamage); }