Sead/Color4f

From Deep Sea Knowledge
Revision as of 17:56, 15 November 2018 by Khangaroo (talk | contribs) (document setLerp)
Jump to navigation Jump to search

sead::Color4f is a helper class containing red, green, blue, and alpha float values.

Implementation

This class has four floats.

float red;
float green;
float blue;
float alpha;

The following operators are supported:

  • +=
  • -=
  • *=
  • /=

If provided a second sead::Color4f instance, the requested operation will be performed using the RGBA values in each operand. If provided a float, the single float will be applied to all RGBA values of the target sead::Color4f using the requested operation.

setLerp(sead::Color4f, sead::Color4f, float)

Linearly interpolates between 2 Color4f values, with the float being the interpolation value.

An implementation looks something like this:

void __fastcall sead::Color4f::setLerp(sead::Color4f *this, const sead::Color4f *start, const sead::Color4f *end, float interpolation)
{
  if ( interpolation >= 0.0 )
  {
    if ( interpolation > 1.0 )
      interpolation = 1.0;
  }
  else
  {
    interpolation = 0.0;
  }
  this->alpha = start->alpha + (interpolation * (end->alpha - start->alpha));
  this->red = start->red + (interpolation * (end->red - start->red));
  this->green = start->green + (interpolation * (end->green - start->green));
  this->blue = start->blue + (interpolation * (end->blue - start->blue));
}

setGammaCollection(sead::Color4f, float)

TODO...

lerp(sead::Color4f, sead::Color4f, float)

TODO...

adjustOverflow()

Clamps the RGBA values to 1.0f.