Beispiel #1
0
            /// <summary>
            /// Test a given entity to determine if it is the best target.
            /// Overwrites currentTarget if the tested entity is best.
            /// </summary>
            /// <param name="targetIndex">index of entity to test</param>
            /// <param name="score">the current score, to beat</param>
            /// <param name=""></param>
            /// <param name="currentTarget">the current target entity</param>
            public void CheckTarget(
                Team pickerTeam,
                Team targetTeam,
                float3 targetPos,
                float3 pickerPos,
                float aggroRadius,
                TargetingOrders orders,
                AgentCategory.eType targetType,
                ref float score,
                ref Entity currentTarget,
                Entity candidate)
            {
                // Cannot target if on the same team.
                if (pickerTeam.ID == targetTeam.ID)
                {
                    return;
                }

                // Cannot target if outside aggro radius.
                var newScore = math.lengthsq(targetPos - pickerPos);

                if (newScore > aggroRadius * aggroRadius)
                {
                    return;
                }

                // Favored and discouraged targets.
                if ((orders.Preferred & targetType) > 0)
                {
                    newScore /= 5f;
                }
                if ((orders.Discouraged & targetType) > 0)
                {
                    newScore *= 5f;
                }

                if (newScore < score)
                {
                    score         = newScore;
                    currentTarget = candidate;
                }
            }
 void OnGUI()
 {
     AgentType = (AgentCategory.eType)EditorGUILayout.EnumFlagsField("Type of this entity", AgentType);
 }
 void OnGUI()
 {
     PreferredTargets   = (AgentCategory.eType)EditorGUILayout.EnumFlagsField("Preferred Targets", PreferredTargets);
     DiscouragedTargets = (AgentCategory.eType)EditorGUILayout.EnumFlagsField("Discouraged Targets", DiscouragedTargets);
 }