Esempio n. 1
0
public override void OnInspectorGUI()
{
//this is so that it always updates correct target
childScript = (AIControllerChild)target;


EditorGUILayout.LabelField("AI Property Controller");
EditorGUILayout.Space();


		if(PrefabUtility.GetPrefabType(childScript.gameObject) == PrefabType.Prefab)
		{
			EditorGUILayout.LabelField("Parameters can't be edited using the Overview Panel if the AI is a prefab.");
			return;
		}



showFoldout1 = EditorGUILayout.Foldout(showFoldout1, "Main Referencing Objects");

//main referencing objects
if(showFoldout1)
{
EditorGUILayout.Space();
patrolManager = EditorGUILayout.ObjectField("Patrol Manager" ,patrolManager, typeof(Object), true) as GameObject;
sensorParent = EditorGUILayout.ObjectField("Sensor Parent" ,sensorParent, typeof(Object), true) as GameObject;
ears = EditorGUILayout.ObjectField("Ears Object" ,ears, typeof(Object), true) as GameObject;
sight = EditorGUILayout.ObjectField("Sight Object" ,sight, typeof(Object), true) as GameObject;
model = EditorGUILayout.ObjectField("Model Object" ,model, typeof(Object), true) as GameObject;
EditorGUILayout.Space();
}
		
showFoldout2 = EditorGUILayout.Foldout(showFoldout2, "Data About AI Character");

//Data About AI Character
if(showFoldout2)
{
EditorGUILayout.Space();
eyeHeight = EditorGUILayout.Vector3Field("Relative Eye Height", eyeHeight);
EditorGUILayout.Space();
health = EditorGUILayout.FloatField("Health", health);
EditorGUILayout.BeginHorizontal();
EditorGUILayout.LabelField("Disengaging Hits To Knockout");
disengagingHitsToKnockout = EditorGUILayout.FloatField(disengagingHitsToKnockout);
EditorGUILayout.EndHorizontal();
radius = EditorGUILayout.FloatField("Radius", radius);
height = EditorGUILayout.FloatField("Height", height);
EditorGUILayout.Space();
}

showFoldout3 = EditorGUILayout.Foldout(showFoldout3, "Data About Enemies");

//Data About Enemies
if(showFoldout3)
{
EditorGUILayout.Space();
tagOfEnemy = EditorGUILayout.TagField("Tag Of Enemy", tagOfEnemy);
tagOfBullet = EditorGUILayout.TagField("Tag Of Bullet", tagOfBullet);
enemyCriticalHeight = EditorGUILayout.Vector3Field("Enemy Critical Height", enemyCriticalHeight);
EditorGUILayout.Space();
}

showFoldout4 = EditorGUILayout.Foldout(showFoldout4, "Reaction Times");

//Reaction Times
if(showFoldout4)
{
EditorGUILayout.Space();
shockTime = EditorGUILayout.FloatField("Reaction To Enemy", shockTime);
freezeTime = EditorGUILayout.FloatField("Freeze Time To Bullet", freezeTime);
minCoverTime = EditorGUILayout.FloatField("Minimum Time In Cover", minCoverTime);
maxCoverTime = EditorGUILayout.FloatField("Maximum Time In Cover", maxCoverTime);
timeBetweenEnemyChecks = EditorGUILayout.FloatField("Enemy Checks", timeBetweenEnemyChecks);
timeForGivingUpDuringEngagement = EditorGUILayout.FloatField("Giving Up Engage Time", timeForGivingUpDuringEngagement);
timeForGivingUpSeeking = EditorGUILayout.FloatField("(Frames)Give up Seeking", timeForGivingUpSeeking);
EditorGUILayout.Space();
}

showFoldout5 = EditorGUILayout.Foldout(showFoldout5, "Emotion Control");

//Emotion Control
if(showFoldout5)
{
EditorGUILayout.Space();
initAndrenaline = EditorGUILayout.FloatField("Andrenaline", initAndrenaline);
initFear = EditorGUILayout.FloatField("Fear", initFear);
chanceForFight = EditorGUILayout.FloatField("ChanceForFight", chanceForFight);
EditorGUILayout.Space();
}

showFoldout6 = EditorGUILayout.Foldout(showFoldout6, "Weapons And Engagment");

//Weapons And Engagment
if(showFoldout6)
{
EditorGUILayout.Space();

if(GUILayout.Button("Hold No Weapon"))
{
weapon = null;
}
			weaponHoldingLocation = EditorGUILayout.ObjectField("Weapon Holding Location" ,weaponHoldingLocation, typeof(Transform), true) as Transform;
			
			weapon = EditorGUILayout.ObjectField("Main Weapon" ,weapon, typeof(Object), true) as GameObject;
			
			
			if(GUILayout.Button("Add more secondary weapons"))
			{
				otherWeapons.Add( null );
				otherWeaponsMelee.Add( 0);
			}
		
			multipleWeaponsScroll = EditorGUILayout.BeginScrollView( multipleWeaponsScroll, GUILayout.Height(100f), GUILayout.Width(300f));
			
			for(int x = 0; x < otherWeapons.Count; x++)
			{
				EditorGUILayout.BeginHorizontal();
				EditorGUILayout.LabelField("Weapon number: " + (x+1).ToString() );
				
				otherWeapons[x] = EditorGUILayout.ObjectField( otherWeapons[x], typeof(Object), true) as GameObject;
				otherWeaponsMelee[x] = EditorGUILayout.Popup( otherWeaponsMelee[x], meleeOptions);
				
				if(GUILayout.Button("X"))
				{
					otherWeapons.RemoveAt(x);
					otherWeaponsMelee.RemoveAt(x);
				}
				
				EditorGUILayout.EndHorizontal();
			}
			EditorGUILayout.EndScrollView();
			

			EditorGUILayout.Space();
			EditorGUILayout.Space();
			EditorGUILayout.Space();
			EditorGUILayout.Space();
			EditorGUILayout.Space();
			EditorGUILayout.Space();
			
			EditorGUILayout.BeginHorizontal();
			EditorGUILayout.LabelField("Engagement Script");
			EditorGUILayout.EndHorizontal();
			EditorGUILayout.BeginVertical();
			if(GUILayout.Button("Add Script"))
			{
				targetCheck.Add("Empty");
				targetVisualCheckChance.Add(0f);
			}
			EditorGUILayout.Space();
			EditorGUILayout.Space();
			EditorGUILayout.BeginHorizontal();
			EditorGUILayout.LabelField("Name Of Script");
			EditorGUILayout.LabelField("% Chance");
			EditorGUILayout.EndHorizontal();
			for(int x = 0; x < targetCheck.Count; x++)
			{
				EditorGUILayout.BeginHorizontal();
				targetCheck[x] = EditorGUILayout.TextField(targetCheck[x]);
				targetVisualCheckChance[x] = EditorGUILayout.FloatField(targetVisualCheckChance[x]);
				if(GUILayout.Button("X"))
				{
					targetCheck.RemoveAt(x);
					targetVisualCheckChance.RemoveAt(x);
				}
				EditorGUILayout.EndHorizontal();
			}
			EditorGUILayout.EndVertical(); 
			EditorGUILayout.Space();
			EditorGUILayout.Space();
			EditorGUILayout.Space();
			EditorGUILayout.Space();
			EditorGUILayout.Space();
			EditorGUILayout.Space();
			EditorGUILayout.Space();
			EditorGUILayout.Space();

			EditorGUILayout.BeginHorizontal();
			EditorGUILayout.LabelField("Distance For Close Combat Logic");
			distanceToEngageCloseCombatLogic = EditorGUILayout.FloatField(distanceToEngageCloseCombatLogic);
			EditorGUILayout.EndHorizontal();
			initAmmo = EditorGUILayout.FloatField("Amount Of Ammo", initAmmo);
			EditorGUILayout.Space();
			offsetFactor = EditorGUILayout.FloatField("Factor for accuracy", offsetFactor);
			EditorGUILayout.Space();
			EditorGUILayout.Space();
			EditorGUILayout.Space();
			
}

showFoldout7 = EditorGUILayout.Foldout(showFoldout7, "Speed References");

//Speed References
if(showFoldout7)
{
EditorGUILayout.Space();
refSpeedPatrol = EditorGUILayout.FloatField("Patrol Reference Speed", refSpeedPatrol);
refSpeedEngage = EditorGUILayout.FloatField("Engage Reference Speed", refSpeedEngage);
refSpeedCover = EditorGUILayout.FloatField("Cover Reference Speed", refSpeedCover);
refSpeedChase = EditorGUILayout.FloatField("Chase Reference Speed", refSpeedChase);
EditorGUILayout.Space();
}

showFoldout8 = EditorGUILayout.Foldout(showFoldout8, "Model Management");

//Model Management
if(showFoldout8)
{
EditorGUILayout.Space();
//modelParentOfAllBones = EditorGUILayout.ObjectField("Parent Of Bones" , modelParentOfAllBones, typeof(Object), true) as GameObject;
handToUseInCharacter = (HandToUse)EditorGUILayout.EnumPopup("Hand To Hold Gun", handToUseInCharacter);
EditorGUILayout.Space();
}

showFoldout9 = EditorGUILayout.Foldout(showFoldout9, "Patrol Management");

//Patrol Management
if(showFoldout9)
{
EditorGUILayout.Space();
EditorGUILayout.LabelField("WAYPOINT MANAGEMENT IN PATROL MANAGER", EditorStyles.boldLabel);
EditorGUILayout.Space();
EditorGUILayout.BeginHorizontal();
EditorGUILayout.LabelField("Distance To Register Waypoint");
distanceToWaypointForRegistering = EditorGUILayout.FloatField(distanceToWaypointForRegistering);
EditorGUILayout.EndHorizontal();

EditorGUILayout.BeginHorizontal();
EditorGUILayout.LabelField("Min Distance To Destination");
patrolMinDistanceToDestination = EditorGUILayout.FloatField(patrolMinDistanceToDestination);
EditorGUILayout.EndHorizontal();

EditorGUILayout.BeginHorizontal();
EditorGUILayout.LabelField("Frames To Check Distance");
patrolFramesCriticalCheck = EditorGUILayout.FloatField(patrolFramesCriticalCheck);
EditorGUILayout.EndHorizontal();

EditorGUILayout.BeginHorizontal();
EditorGUILayout.LabelField("Checks Until Registering Destination");
patrolChecksCritical = EditorGUILayout.FloatField(patrolChecksCritical);
EditorGUILayout.EndHorizontal();

EditorGUILayout.Space();
}

showFoldout10 = EditorGUILayout.Foldout(showFoldout10, "Optimisation");

//Optimisation
if(showFoldout10)
{
EditorGUILayout.Space();
coverAmountOfRays = EditorGUILayout.FloatField("Cover: Amount Of Rays", coverAmountOfRays);
coverFieldOfView = EditorGUILayout.FloatField("Cover: Fielf Of View", coverFieldOfView);
coverDistanceToCheck = EditorGUILayout.FloatField("Cover: Distance To Check", coverDistanceToCheck);
patrolTickBarrier = EditorGUILayout.FloatField("Patrol: Frames To Check", patrolTickBarrier);
coverTrueCoverTest = EditorGUILayout.FloatField("Patrol: Extra Checks", coverTrueCoverTest);

/*
EditorGUILayout.BeginHorizontal();
EditorGUILayout.LabelField("Cover Layermask: ");
coverLayerMask = EditorGUILayout.MaskField( coverLayerMask, );
EditorGUILayout.EndHorizontal();*/

EditorGUILayout.Space();
}

showFoldout11 = EditorGUILayout.Foldout(showFoldout11, "Melee Settings");
//melee stuff
if(showFoldout11)
{
EditorGUILayout.Space();
meleeSetting = EditorGUILayout.Popup(meleeSetting, meleeOptions);
if(meleeSetting != 0)
{
distanceForMeleeAttack = EditorGUILayout.FloatField("Distance for melee attack", distanceForMeleeAttack);
}
EditorGUILayout.Space();
}


if(GUI.changed)
{

SetVariablesToChild();

}
else
{
GetVariablesFromChild();
}

}
Esempio n. 2
0
    public override void OnInspectorGUI()
    {
//this is so that it always updates correct target
        childScript = (AIControllerChild)target;


        EditorGUILayout.LabelField("AI Property Controller");
        EditorGUILayout.Space();


        if (PrefabUtility.GetPrefabType(childScript.gameObject) == PrefabType.Prefab)
        {
            EditorGUILayout.LabelField("Parameters can't be edited using the Overview Panel if the AI is a prefab.");
            return;
        }



        showFoldout1 = EditorGUILayout.Foldout(showFoldout1, "Main Referencing Objects");

//main referencing objects
        if (showFoldout1)
        {
            EditorGUILayout.Space();
            patrolManager = EditorGUILayout.ObjectField("Patrol Manager", patrolManager, typeof(Object), true) as GameObject;
            sensorParent  = EditorGUILayout.ObjectField("Sensor Parent", sensorParent, typeof(Object), true) as GameObject;
            ears          = EditorGUILayout.ObjectField("Ears Object", ears, typeof(Object), true) as GameObject;
            sight         = EditorGUILayout.ObjectField("Sight Object", sight, typeof(Object), true) as GameObject;
            model         = EditorGUILayout.ObjectField("Model Object", model, typeof(Object), true) as GameObject;
            EditorGUILayout.Space();
        }

        showFoldout2 = EditorGUILayout.Foldout(showFoldout2, "Data About AI Character");

//Data About AI Character
        if (showFoldout2)
        {
            EditorGUILayout.Space();
            eyeHeight = EditorGUILayout.Vector3Field("Relative Eye Height", eyeHeight);
            EditorGUILayout.Space();
            health = EditorGUILayout.FloatField("Health", health);
            EditorGUILayout.BeginHorizontal();
            EditorGUILayout.LabelField("Disengaging Hits To Knockout");
            disengagingHitsToKnockout = EditorGUILayout.FloatField(disengagingHitsToKnockout);
            EditorGUILayout.EndHorizontal();
            radius = EditorGUILayout.FloatField("Radius", radius);
            height = EditorGUILayout.FloatField("Height", height);
            EditorGUILayout.Space();
        }

        showFoldout3 = EditorGUILayout.Foldout(showFoldout3, "Data About Enemies");

//Data About Enemies
        if (showFoldout3)
        {
            EditorGUILayout.Space();
            tagOfEnemy          = EditorGUILayout.TagField("Tag Of Enemy", tagOfEnemy);
            tagOfBullet         = EditorGUILayout.TagField("Tag Of Bullet", tagOfBullet);
            enemyCriticalHeight = EditorGUILayout.Vector3Field("Enemy Critical Height", enemyCriticalHeight);
            EditorGUILayout.Space();
        }

        showFoldout4 = EditorGUILayout.Foldout(showFoldout4, "Reaction Times");

//Reaction Times
        if (showFoldout4)
        {
            EditorGUILayout.Space();
            shockTime                       = EditorGUILayout.FloatField("Reaction To Enemy", shockTime);
            freezeTime                      = EditorGUILayout.FloatField("Freeze Time To Bullet", freezeTime);
            minCoverTime                    = EditorGUILayout.FloatField("Minimum Time In Cover", minCoverTime);
            maxCoverTime                    = EditorGUILayout.FloatField("Maximum Time In Cover", maxCoverTime);
            timeBetweenEnemyChecks          = EditorGUILayout.FloatField("Enemy Checks", timeBetweenEnemyChecks);
            timeForGivingUpDuringEngagement = EditorGUILayout.FloatField("Giving Up Engage Time", timeForGivingUpDuringEngagement);
            timeForGivingUpSeeking          = EditorGUILayout.FloatField("(Frames)Give up Seeking", timeForGivingUpSeeking);
            EditorGUILayout.Space();
        }

        showFoldout5 = EditorGUILayout.Foldout(showFoldout5, "Emotion Control");

//Emotion Control
        if (showFoldout5)
        {
            EditorGUILayout.Space();
            initAndrenaline = EditorGUILayout.FloatField("Andrenaline", initAndrenaline);
            initFear        = EditorGUILayout.FloatField("Fear", initFear);
            chanceForFight  = EditorGUILayout.FloatField("ChanceForFight", chanceForFight);
            EditorGUILayout.Space();
        }

        showFoldout6 = EditorGUILayout.Foldout(showFoldout6, "Weapons And Engagment");

//Weapons And Engagment
        if (showFoldout6)
        {
            EditorGUILayout.Space();

            if (GUILayout.Button("Hold No Weapon"))
            {
                weapon = null;
            }
            weaponHoldingLocation = EditorGUILayout.ObjectField("Weapon Holding Location", weaponHoldingLocation, typeof(Transform), true) as Transform;

            weapon = EditorGUILayout.ObjectField("Main Weapon", weapon, typeof(Object), true) as GameObject;


            if (GUILayout.Button("Add more secondary weapons"))
            {
                otherWeapons.Add(null);
                otherWeaponsMelee.Add(0);
            }

            multipleWeaponsScroll = EditorGUILayout.BeginScrollView(multipleWeaponsScroll, GUILayout.Height(100f), GUILayout.Width(300f));

            for (int x = 0; x < otherWeapons.Count; x++)
            {
                EditorGUILayout.BeginHorizontal();
                EditorGUILayout.LabelField("Weapon number: " + (x + 1).ToString());

                otherWeapons[x]      = EditorGUILayout.ObjectField(otherWeapons[x], typeof(Object), true) as GameObject;
                otherWeaponsMelee[x] = EditorGUILayout.Popup(otherWeaponsMelee[x], meleeOptions);

                if (GUILayout.Button("X"))
                {
                    otherWeapons.RemoveAt(x);
                    otherWeaponsMelee.RemoveAt(x);
                }

                EditorGUILayout.EndHorizontal();
            }
            EditorGUILayout.EndScrollView();


            EditorGUILayout.Space();
            EditorGUILayout.Space();
            EditorGUILayout.Space();
            EditorGUILayout.Space();
            EditorGUILayout.Space();
            EditorGUILayout.Space();

            EditorGUILayout.BeginHorizontal();
            EditorGUILayout.LabelField("Engagement Script");
            EditorGUILayout.EndHorizontal();
            EditorGUILayout.BeginVertical();
            if (GUILayout.Button("Add Script"))
            {
                targetCheck.Add("Empty");
                targetVisualCheckChance.Add(0f);
            }
            EditorGUILayout.Space();
            EditorGUILayout.Space();
            EditorGUILayout.BeginHorizontal();
            EditorGUILayout.LabelField("Name Of Script");
            EditorGUILayout.LabelField("% Chance");
            EditorGUILayout.EndHorizontal();
            for (int x = 0; x < targetCheck.Count; x++)
            {
                EditorGUILayout.BeginHorizontal();
                targetCheck[x]             = EditorGUILayout.TextField(targetCheck[x]);
                targetVisualCheckChance[x] = EditorGUILayout.FloatField(targetVisualCheckChance[x]);
                if (GUILayout.Button("X"))
                {
                    targetCheck.RemoveAt(x);
                    targetVisualCheckChance.RemoveAt(x);
                }
                EditorGUILayout.EndHorizontal();
            }
            EditorGUILayout.EndVertical();
            EditorGUILayout.Space();
            EditorGUILayout.Space();
            EditorGUILayout.Space();
            EditorGUILayout.Space();
            EditorGUILayout.Space();
            EditorGUILayout.Space();
            EditorGUILayout.Space();
            EditorGUILayout.Space();

            EditorGUILayout.BeginHorizontal();
            EditorGUILayout.LabelField("Distance For Close Combat Logic");
            distanceToEngageCloseCombatLogic = EditorGUILayout.FloatField(distanceToEngageCloseCombatLogic);
            EditorGUILayout.EndHorizontal();
            initAmmo = EditorGUILayout.FloatField("Amount Of Ammo", initAmmo);
            EditorGUILayout.Space();
            offsetFactor = EditorGUILayout.FloatField("Factor for accuracy", offsetFactor);
            EditorGUILayout.Space();
            EditorGUILayout.Space();
            EditorGUILayout.Space();
        }

        showFoldout7 = EditorGUILayout.Foldout(showFoldout7, "Speed References");

//Speed References
        if (showFoldout7)
        {
            EditorGUILayout.Space();
            refSpeedPatrol = EditorGUILayout.FloatField("Patrol Reference Speed", refSpeedPatrol);
            refSpeedEngage = EditorGUILayout.FloatField("Engage Reference Speed", refSpeedEngage);
            refSpeedCover  = EditorGUILayout.FloatField("Cover Reference Speed", refSpeedCover);
            refSpeedChase  = EditorGUILayout.FloatField("Chase Reference Speed", refSpeedChase);
            EditorGUILayout.Space();
        }

        showFoldout8 = EditorGUILayout.Foldout(showFoldout8, "Model Management");

//Model Management
        if (showFoldout8)
        {
            EditorGUILayout.Space();
//modelParentOfAllBones = EditorGUILayout.ObjectField("Parent Of Bones" , modelParentOfAllBones, typeof(Object), true) as GameObject;
            handToUseInCharacter = (HandToUse)EditorGUILayout.EnumPopup("Hand To Hold Gun", handToUseInCharacter);
            EditorGUILayout.Space();
        }

        showFoldout9 = EditorGUILayout.Foldout(showFoldout9, "Patrol Management");

//Patrol Management
        if (showFoldout9)
        {
            EditorGUILayout.Space();
            EditorGUILayout.LabelField("WAYPOINT MANAGEMENT IN PATROL MANAGER", EditorStyles.boldLabel);
            EditorGUILayout.Space();
            EditorGUILayout.BeginHorizontal();
            EditorGUILayout.LabelField("Distance To Register Waypoint");
            distanceToWaypointForRegistering = EditorGUILayout.FloatField(distanceToWaypointForRegistering);
            EditorGUILayout.EndHorizontal();

            EditorGUILayout.BeginHorizontal();
            EditorGUILayout.LabelField("Min Distance To Destination");
            patrolMinDistanceToDestination = EditorGUILayout.FloatField(patrolMinDistanceToDestination);
            EditorGUILayout.EndHorizontal();

            EditorGUILayout.BeginHorizontal();
            EditorGUILayout.LabelField("Frames To Check Distance");
            patrolFramesCriticalCheck = EditorGUILayout.FloatField(patrolFramesCriticalCheck);
            EditorGUILayout.EndHorizontal();

            EditorGUILayout.BeginHorizontal();
            EditorGUILayout.LabelField("Checks Until Registering Destination");
            patrolChecksCritical = EditorGUILayout.FloatField(patrolChecksCritical);
            EditorGUILayout.EndHorizontal();

            EditorGUILayout.Space();
        }

        showFoldout10 = EditorGUILayout.Foldout(showFoldout10, "Optimisation");

//Optimisation
        if (showFoldout10)
        {
            EditorGUILayout.Space();
            coverAmountOfRays    = EditorGUILayout.FloatField("Cover: Amount Of Rays", coverAmountOfRays);
            coverFieldOfView     = EditorGUILayout.FloatField("Cover: Fielf Of View", coverFieldOfView);
            coverDistanceToCheck = EditorGUILayout.FloatField("Cover: Distance To Check", coverDistanceToCheck);
            patrolTickBarrier    = EditorGUILayout.FloatField("Patrol: Frames To Check", patrolTickBarrier);
            coverTrueCoverTest   = EditorGUILayout.FloatField("Patrol: Extra Checks", coverTrueCoverTest);

/*
 * EditorGUILayout.BeginHorizontal();
 * EditorGUILayout.LabelField("Cover Layermask: ");
 * coverLayerMask = EditorGUILayout.MaskField( coverLayerMask, );
 * EditorGUILayout.EndHorizontal();*/

            EditorGUILayout.Space();
        }

        showFoldout11 = EditorGUILayout.Foldout(showFoldout11, "Melee Settings");
//melee stuff
        if (showFoldout11)
        {
            EditorGUILayout.Space();
            meleeSetting = EditorGUILayout.Popup(meleeSetting, meleeOptions);
            if (meleeSetting != 0)
            {
                distanceForMeleeAttack = EditorGUILayout.FloatField("Distance for melee attack", distanceForMeleeAttack);
            }
            EditorGUILayout.Space();
        }


        if (GUI.changed)
        {
            SetVariablesToChild();
        }
        else
        {
            GetVariablesFromChild();
        }
    }
Esempio n. 3
0
void OnEnable()
{
childScript = (AIControllerChild)target;
GetVariablesFromChild();
}
Esempio n. 4
0
 void OnEnable()
 {
     childScript = (AIControllerChild)target;
     GetVariablesFromChild();
 }