### Components

### ScriptableObjects

### Plain C# Classes

SelectorType : ScriptableObject

### What is a Selector Type?

A Selector Type can be chosen to be used by a Selector. This is the more complex way to compute
a value. The Selector Type will define a range of possible values, min to max, and a starting value.
It will then use it's Selector Factors to calculate a value, add it to the starting value and then
clamp it between min and max if needed.

A Selector Type can handle enum values, either as Choices or as an Attribute Type that is a list of options.
In this case the Combine Type must be Normalized Weighted Average and the Selector Factors have to return
values in 0-1 range. The options will be binned and the value returned will fit in one bin which will be
selected. For example if there are 10 choices it would bin the 0-1 float values into the following 10 bins:

**[0,.1), [.1, .2), [.2, .3), [.3, .4), [.4, .5), [.5, .6), [.6, .7), [.7, .8), [.8, .9), [.9, 1]**

If the SFs returned a weighted average value of .6 then choice 7 would be picked since '(' means exclusive
and '[' means inclusive.

### Selector Type Custom Inspector

Start Type | Min, Current Value, Fixed Value, or Max. What should be the starting value? The final calulated value is added to this. |

Min Type | None, Min, Current Value, or Fixed Value. What is the minimum value allowed? |

Max Type | None, Max, Current Value, or Fixed Value. What is the maximum value allowed? |

Combine Type | Sum, Multiply, or Normalized Weighted Average. |

Selector Factors are used to dynamically generate values and can use runtime conditions.
The multiple Selector Factors are combined based on the Combine Type. If the Combine Type is
Normalized Weighted Average then the weight will determine the impact of each factor. The
weights do not need to add to one but should be greater than zero.
See Selector Factor Script. |