コード例 #1
0
    void ReturnDamage(SHDamageObject pDamage)
    {
        if (null == pDamage)
        {
            return;
        }

        Single.ObjectPool.Return(pDamage.gameObject);
    }
コード例 #2
0
    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);
    }
コード例 #3
0
    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);
        });
    }
コード例 #4
0
    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);
        }
    }
コード例 #5
0
    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);
    }
コード例 #6
0
ファイル: SHRnD_Damage.cs プロジェクト: shmhlove/LambKebab
 public void OnEventToCollision(SHDamageObject pDamage)
 {
     Debug.LogFormat("SHRnD_Damage::OnEventToCollision() - Event On Collision : {0}", pDamage.m_pInfo.m_strID);
 }
コード例 #7
0
ファイル: SHRnD_Damage.cs プロジェクト: shmhlove/LambKebab
 public void OnEventToDelete(SHDamageObject pDamage)
 {
     Debug.LogFormat("SHRnD_Damage::OnEventToDelete() - Event On Delete : {0}", pDamage.m_pInfo.m_strID);
 }
コード例 #8
0
ファイル: SHDamageObject.cs プロジェクト: shmhlove/LambKebab
 public void SendEventToCollision(SHDamageObject pDamage)
 {
     SHUtils.ForToList(m_pEventToCollision, (pCallback) => pCallback(pDamage));
 }
コード例 #9
0
ファイル: SHDamageObject.cs プロジェクト: shmhlove/LambKebab
 public void SendEventToDelete(SHDamageObject pDamage)
 {
     SHUtils.ForToList(m_pEventToDelete, (pCallback) => pCallback(pDamage));
 }
コード例 #10
0
 public void OnEventToDeleteDamage(SHDamageObject pDamage)
 {
     DelDamage(pDamage);
 }