# 02 Computed

This example shows you how to create computed signals.

These files can be found in the /Examples/\[example] and /Blackboards/Examples folders.

![Example 02 Computed editor](https://3907927415-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F9IiEBezOtBtfBlKn7fXC%2Fuploads%2Fgit-blob-55c4ecb230a3888ccedf299a90ed3e676c4d8420%2Fblackboard_examples_02.gif?alt=media)

## ComputedBlackboard.cs

```csharp
﻿using CrashKonijn.RabbitBlackboard.Contracts;

namespace CrashKonijn.BlackboardPro.Blackboards.Examples
{
    public partial class ComputedBlackboard : BlackboardBehaviour
    {
        private int health = 100;
        private int lowHealth = 40;

        // Computed signals automatically update when their dependencies change
        private static bool _isAlive(Signals.Health health) => health.Value > 0;

        // Computed signals can depend on multiple signals
        private static bool _isLowHealth(Signals.Health health, Signals.LowHealth lowHealth) => health.Value <= lowHealth.Value;
    }
}

```

## ComputedHealthBehaviour.cs

```csharp
﻿using CrashKonijn.RabbitBlackboard.Contracts;
using UnityEngine;
using ComputedBlackboard = CrashKonijn.BlackboardPro.Blackboards.Examples.ComputedBlackboard;

namespace CrashKonijn.BlackboardPro.Examples._02_computed
{
    [RequireComponent(typeof(ComputedBlackboard))]
    public class ComputedHealthBehaviour : MonoBehaviour
    {
        /* Simple hack to show a button in the editor */
        [Header("Removes 10 health.")]
        [Button(nameof(DoDamage))]
        public string doDamageButton;

        /* Simple hack to show a button in the editor */
        [Header("Adds 10 health")]
        [Button(nameof(Heal))]
        public string healButton;

        private ComputedBlackboard blackboard;

        public ComputedBlackboard Blackboard
        {
            get
            {
                if (this.blackboard == null)
                {
                    this.blackboard = this.GetComponent<ComputedBlackboard>();
                }

                return this.blackboard;
            }
        }

        public void DoDamage()
        {
            this.Blackboard.Health -= 10;
        }

        public void Heal()
        {
            this.Blackboard.Health += 10;
        }
    }
}

```
