public override void OnInspectorGUI() { UnitAuthoringComponent unitAuthoring = target as UnitAuthoringComponent; EditorGUI.BeginChangeCheck(); unitAuthoring.unitType = (UnitType)EditorGUILayout.EnumFlagsField("Unit Type", unitAuthoring.unitType); unitAuthoring.isEnemy = EditorGUILayout.Toggle("Is Enemy", unitAuthoring.isEnemy); m_FreezeRotationFoldout = EditorGUILayout.Foldout(m_FreezeRotationFoldout, "Freeze Rotation"); if (m_FreezeRotationFoldout) { EditorGUI.indentLevel++; unitAuthoring.freezeRotation.x = EditorGUILayout.Toggle("X", unitAuthoring.freezeRotation.x); unitAuthoring.freezeRotation.y = EditorGUILayout.Toggle("Y", unitAuthoring.freezeRotation.y); unitAuthoring.freezeRotation.z = EditorGUILayout.Toggle("Z", unitAuthoring.freezeRotation.z); EditorGUI.indentLevel--; } m_MovementFoldout = EditorGUILayout.Foldout(m_MovementFoldout, "Movement"); if (m_MovementFoldout) { EditorGUI.indentLevel++; unitAuthoring.unitMove.moveSpeed = EditorGUILayout.FloatField("Movement Speed", unitAuthoring.unitMove.moveSpeed); unitAuthoring.unitMove.turnRate = EditorGUILayout.FloatField("Turn Rate", unitAuthoring.unitMove.turnRate); EditorGUI.indentLevel--; } if ((unitAuthoring.unitType & UnitType.Harvester) != 0) { m_HarvestingFoldout = EditorGUILayout.Foldout(m_HarvestingFoldout, "Harvesting"); if (m_HarvestingFoldout) { EditorGUI.indentLevel++; unitAuthoring.harvester.carryCapacity = EditorGUILayout.IntField("Carry Capacity", unitAuthoring.harvester.carryCapacity); unitAuthoring.harvester.harvestAmount = EditorGUILayout.IntField("Harvest Amount", unitAuthoring.harvester.harvestAmount); unitAuthoring.harvester.harvestRange = EditorGUILayout.FloatField("Harvest Range", unitAuthoring.harvester.harvestRange); unitAuthoring.harvester.harvestTickCooldown = EditorGUILayout.FloatField("Harvest Cooldown", unitAuthoring.harvester.harvestTickCooldown); unitAuthoring.harvester.harvestTickTimer = unitAuthoring.harvester.harvestTickCooldown; EditorGUI.indentLevel--; } } if (EditorGUI.EndChangeCheck()) { EditorUtility.SetDirty(unitAuthoring); } }
public override void OnInspectorGUI() { UnitAuthoringComponent unitAuthoring = target as UnitAuthoringComponent; EditorGUI.BeginChangeCheck(); unitAuthoring.unitCentreTransform = (Transform)EditorGUILayout.ObjectField("Centre Transform", unitAuthoring.unitCentreTransform, typeof(Transform), true); unitAuthoring.unitType = (UnitType)EditorGUILayout.EnumFlagsField("Unit Type", unitAuthoring.unitType); unitAuthoring.isEnemy = EditorGUILayout.Toggle("Is Enemy", unitAuthoring.isEnemy); m_defensesFoldout = EditorGUILayout.Foldout(m_defensesFoldout, "Defenses"); if (m_defensesFoldout) { unitAuthoring.health.health = EditorGUILayout.IntField("Health", unitAuthoring.health.health); unitAuthoring.resistances.armour = EditorGUILayout.IntField("Armour", unitAuthoring.resistances.armour); unitAuthoring.resistances.resistanceFlags = (DamageType)EditorGUILayout.EnumFlagsField("Resistances", unitAuthoring.resistances.resistanceFlags); } m_freezeRotationFoldout = EditorGUILayout.Foldout(m_freezeRotationFoldout, "Freeze Rotation"); if (m_freezeRotationFoldout) { EditorGUI.indentLevel++; unitAuthoring.freezeRotation.x = EditorGUILayout.Toggle("X", unitAuthoring.freezeRotation.x); unitAuthoring.freezeRotation.y = EditorGUILayout.Toggle("Y", unitAuthoring.freezeRotation.y); unitAuthoring.freezeRotation.z = EditorGUILayout.Toggle("Z", unitAuthoring.freezeRotation.z); EditorGUI.indentLevel--; } m_movementFoldout = EditorGUILayout.Foldout(m_movementFoldout, "Movement"); if (m_movementFoldout) { EditorGUI.indentLevel++; unitAuthoring.unitMove.moveSpeed = EditorGUILayout.FloatField("Movement Speed (m/s)", unitAuthoring.unitMove.moveSpeed); unitAuthoring.unitMove.turnRate = EditorGUILayout.FloatField("Turn Rate (°)", unitAuthoring.unitMove.turnRate); EditorGUI.indentLevel--; } if ((unitAuthoring.unitType & UnitType.Harvester) != 0) { m_harvestingFoldout = EditorGUILayout.Foldout(m_harvestingFoldout, "Harvesting"); if (m_harvestingFoldout) { EditorGUI.indentLevel++; unitAuthoring.harvester.carryCapacity = EditorGUILayout.IntField("Carry Capacity", unitAuthoring.harvester.carryCapacity); unitAuthoring.harvester.harvestAmount = EditorGUILayout.IntField("Harvest Amount", unitAuthoring.harvester.harvestAmount); unitAuthoring.harvester.harvestRange = EditorGUILayout.FloatField("Harvest Range", unitAuthoring.harvester.harvestRange); unitAuthoring.harvester.harvestTickCooldown = EditorGUILayout.FloatField("Harvest Cooldown", unitAuthoring.harvester.harvestTickCooldown); unitAuthoring.harvester.harvestTickTimer = unitAuthoring.harvester.harvestTickCooldown; EditorGUI.indentLevel--; } } if ((unitAuthoring.unitType & (UnitType.Melee | UnitType.Ranged)) != 0) { m_combatFoldout = EditorGUILayout.Foldout(m_combatFoldout, "Combat"); if (m_combatFoldout) { EditorGUI.indentLevel++; unitAuthoring.combatUnit.attackDamage = EditorGUILayout.IntField("Attack Damage", unitAuthoring.combatUnit.attackDamage); unitAuthoring.combatUnit.damageType = (DamageType)EditorGUILayout.EnumFlagsField("Damage Type", unitAuthoring.combatUnit.damageType); unitAuthoring.combatUnit.attackRange = EditorGUILayout.IntField("Attack Range", unitAuthoring.combatUnit.attackRange); unitAuthoring.combatUnit.attackSpeed = EditorGUILayout.FloatField("Attack Speed (a/s)", unitAuthoring.combatUnit.attackSpeed); //TODO: Implement ranged unit authoring. if ((unitAuthoring.unitType & UnitType.Ranged) != 0) { unitAuthoring.rangedUnit.accuracy = math.clamp(EditorGUILayout.FloatField("Accuracy", unitAuthoring.rangedUnit.accuracy), 0, 1); unitAuthoring.projectileGameObject = (ProjectileAuthoringComponent)EditorGUILayout.ObjectField("Projectile", unitAuthoring.projectileGameObject, typeof(ProjectileAuthoringComponent), false); unitAuthoring.projectileSpawnTransform = (Transform)EditorGUILayout.ObjectField("Projectile Spawn Transform", unitAuthoring.projectileSpawnTransform, typeof(Transform), true); } EditorGUI.indentLevel--; } } if (EditorGUI.EndChangeCheck()) { EditorUtility.SetDirty(unitAuthoring); } }