ProtoTracer  1.0
Real-time 3D rendering and animation engine
Loading...
Searching...
No Matches
DrGonzoProject Class Reference

#include <DrGonzoProject.h>

Inheritance diagram for DrGonzoProject:
Collaboration diagram for DrGonzoProject:

Public Member Functions

 DrGonzoProject ()
 
void Update (float ratio) override
 Updates the project state based on the given ratio.
 
- Public Member Functions inherited from ProtogenProject
 ProtogenProject (CameraManager *cameras, Controller *controller, uint8_t numObjects, Vector2D camMin, Vector2D camMax, uint8_t microphonePin, uint8_t buttonPin, uint8_t faceCount)
 Constructs a ProtogenProject instance.
 
void Initialize () override
 Initializes the ProtogenProject, setting up sensors, menus, and hardware.
 
virtual void SpectrumAnalyzerCallback ()=0
 Callback invoked when the Spectrum Analyzer face is enabled/updated.
 
virtual void AudioReactiveGradientCallback ()=0
 Callback invoked when the Audio Reactive Gradient face is enabled/updated.
 
virtual void OscilloscopeCallback ()=0
 Callback invoked when the Oscilloscope face is enabled/updated.
 
- Public Member Functions inherited from Project
 Project (CameraManager *cameras, Controller *controller, uint8_t numObjects)
 Constructs a Project with specified camera manager and controller.
 
float GetAnimationTime ()
 Retrieves the time spent on animations.
 
float GetRenderTime ()
 Retrieves the time spent on rendering.
 
float GetDisplayTime ()
 Retrieves the time spent on display operations.
 
float GetFrameRate ()
 Retrieves the current frame rate.
 
void Animate (float ratio)
 Animates the project state based on the given ratio.
 
void Render ()
 Renders the scene.
 
void Display ()
 Updates the display with the rendered content.
 
void PrintStats ()
 Prints performance statistics such as frame rate and operation times.
 

Private Member Functions

void LinkControlParameters () override
 Links external or user-defined control parameters (pure virtual to be implemented).
 
void Default ()
 
void Happy ()
 
void Angy ()
 
void Lewd ()
 
void Loading ()
 
void Question ()
 
void Dizzy ()
 
void Sad ()
 
void OwO ()
 
void Boop ()
 

Private Attributes

HUB75DeltaCameraManager cameras
 
HUB75Controller controller = HUB75Controller(&cameras, 255, 100)
 
DrGonzoFace pM
 
DrGonzoSD sideDisplay
 
DrGonzoTears tears
 
SimpleMaterial lBlue = SimpleMaterial(RGBColor(50, 126, 180))
 
MaterialAnimator< 2 > sideDisplayMaterial = MaterialAnimator<2>()
 
FunctionGenerator drip1 = FunctionGenerator(FunctionGenerator::Gravity, 0.0f, 1.0f, 2.73f)
 
FunctionGenerator drip2 = FunctionGenerator(FunctionGenerator::Gravity, 0.0f, 1.0f, 2.41f)
 
FunctionGenerator drip3 = FunctionGenerator(FunctionGenerator::Gravity, 0.0f, 1.0f, 2.16f)
 
FunctionGenerator loadingBar = FunctionGenerator(FunctionGenerator::Sawtooth, 0.0f, 1.0f, 7.23f)
 
Transform tearTransform
 
MorphTransform< 5 > morphTransform = MorphTransform<5>(&eEA)
 
const __FlashStringHelperfaceArray [14] = {F("DEFAULT"), F("HAPPY"), F("ANGY"), F("LEWD"), F("LOADING"), F("QUESTION"), F("DIZZY"), F("SAD"), F("OWO"), F("BOOP"), F("AUDIO1"), F("AUDIO2"), F("AUDIO3")}
 

Additional Inherited Members

- Protected Types inherited from ProtogenProject
enum  Color {
  CBASE , CYELLOW , CORANGE , CWHITE ,
  CGREEN , CPURPLE , CRED , CBLUE ,
  CRAINBOW , CRAINBOWNOISE , CHORIZONTALRAINBOW , CBLACK
}
 Enumeration of different color states for the face material. More...
 
- Protected Member Functions inherited from ProtogenProject
void UpdateFace (float ratio)
 Updates the face's rendered content, reading any user input and applying changes.
 
void SetCameraMain (Vector2D min, Vector2D max)
 Sets the camera bounds for the main (front) view.
 
void SetCameraRear (Vector2D min, Vector2D max)
 Sets the camera bounds for the rear view.
 
Transform GetAlignmentTransform (Vector2D min, Vector2D max, Object3D *obj, float rotation=0.0f, float margin=2.0f)
 Computes a transform for aligning a single Object3D within the given bounds.
 
Transform GetAlignmentTransform (Vector2D min, Vector2D max, Object3D **objects, uint8_t objectCount, float rotation=0.0f, float margin=2.0f)
 Computes a transform for aligning multiple Object3D objects within the given bounds.
 
void AlignObject (Vector2D min, Vector2D max, Object3D *obj, float rotation=0.0f, float margin=2.0f, bool mirror=true)
 Aligns a single Object3D within the given bounds, applying scaling.
 
void AlignObjects (Vector2D min, Vector2D max, Object3D **objects, uint8_t objectCount, float rotation=0.0f, float margin=2.0f, bool mirror=true)
 Aligns multiple Object3D objects, applying scaling.
 
void AlignObjectNoScale (Vector2D min, Vector2D max, Object3D *obj, float rotation=0.0f, float margin=2.0f, bool mirror=true)
 Aligns a single Object3D without scaling.
 
void AlignObjectsNoScale (Vector2D min, Vector2D max, Object3D **objects, uint8_t objectCount, float rotation=0.0f, float margin=2.0f, bool mirror=true)
 Aligns multiple Object3D objects without scaling.
 
void AlignObjectFace (Object3D *obj, float rotation=0.0f, float margin=2.0f, bool mirror=true)
 Aligns a single Object3D to the "face" camera bounds with scaling.
 
void AlignObjectsFace (Object3D **objects, uint8_t objectCount, float rotation=0.0f, float margin=2.0f, bool mirror=true)
 Aligns multiple Object3D objects to the "face" camera bounds with scaling.
 
void AlignObjectNoScaleFace (Object3D *obj, float rotation=0.0f, float margin=2.0f, bool mirror=true)
 Aligns a single Object3D to the "face" camera bounds without scaling.
 
void AlignObjectsNoScaleFace (Object3D **objects, uint8_t objectCount, float rotation=0.0f, float margin=2.0f, bool mirror=true)
 Aligns multiple Object3D objects to the "face" camera bounds without scaling.
 
void AlignObjectRear (Object3D *obj, float rotation=0.0f, float margin=2.0f, bool mirror=true)
 Aligns a single Object3D to the rear camera bounds with scaling.
 
void AlignObjectsRear (Object3D **objects, uint8_t objectCount, float rotation=0.0f, float margin=2.0f, bool mirror=true)
 Aligns multiple Object3D objects to the rear camera bounds with scaling.
 
void AlignObjectNoScaleRear (Object3D *obj, float rotation=0.0f, float margin=2.0f, bool mirror=true)
 Aligns a single Object3D to the rear camera bounds without scaling.
 
void AlignObjectsNoScaleRear (Object3D **objects, uint8_t objectCount, float rotation=0.0f, float margin=2.0f, bool mirror=true)
 Aligns multiple Object3D objects to the rear camera bounds without scaling.
 
ObjectAlignGetObjectAlign ()
 Gets the generic ObjectAlign instance.
 
ObjectAlignGetObjectAlignFace ()
 Gets the ObjectAlign instance for the face camera.
 
ObjectAlignGetObjectAlignRear ()
 Gets the ObjectAlign instance for the rear camera.
 
float GetFaceScale ()
 Computes the face scaling based on a user-defined face size.
 
void AddParameter (uint8_t index, float *parameter, uint16_t transitionFrames, IEasyEaseAnimator::InterpolationMethod interpolationMethod=IEasyEaseAnimator::InterpolationMethod::Overshoot, bool invertDirection=false)
 Adds a parameter to the EasyEaseAnimator for interpolation.
 
void AddViseme (Viseme::MouthShape visemeName, float *parameter)
 Adds a viseme parameter to the animator (for mouth shapes).
 
void AddBlinkParameter (float *blinkParameter)
 Adds a float parameter to the blink track for controlling blinking.
 
void AddParameterFrame (uint16_t ProjectIndex, float target)
 Adds a frame target to a previously added parameter.
 
void AddMaterial (Material::Method method, Material *material, uint16_t frames=20, float minOpacity=0.0f, float maxOpacity=1.0f)
 Adds a new material to the face's MaterialAnimator with given parameters.
 
void AddMaterialFrame (Color color, float opacity=0.8f)
 Adds a new material frame to the face's MaterialAnimator from a color enum.
 
void AddMaterialFrame (Material &material, float opacity=1.0f)
 Adds a new material frame to the face's MaterialAnimator from a Material reference.
 
void AddBackgroundMaterial (Material::Method method, Material *material, uint16_t frames=20, float minOpacity=0.0f, float maxOpacity=1.0f)
 Adds a new material to the background's MaterialAnimator with given parameters.
 
void AddBackgroundMaterialFrame (Color color, float opacity=0.8f)
 Adds a material frame to the background from a color enum.
 
void AddBackgroundMaterialFrame (Material &material, float opacity=1.0f)
 Adds a material frame to the background from a Material reference.
 
void SpectrumAnalyzerFace ()
 Enables the Spectrum Analyzer on the face, updating offsets and calling callbacks.
 
void AudioReactiveGradientFace ()
 Enables the Audio Reactive Gradient on the face, updating offsets and calling callbacks.
 
void OscilloscopeFace ()
 Enables the Oscilloscope on the face, updating offsets and calling callbacks.
 
void HideFace ()
 Hides the face by setting its offset parameter.
 
void DisableBlinking ()
 Disables blinking (pauses and resets the blink track).
 
void EnableBlinking ()
 Enables blinking (resets and plays the blink track).
 
bool IsBooped ()
 Checks if the sensor has detected a boop.
 
Vector3D GetWiggleOffset ()
 Computes and returns a Vector3D offset for a "wiggle" effect using function generators.
 
void SetWiggleSpeed (float multiplier)
 Sets the overall wiggle speed for both X and Y function generators.
 
void SetMenuWiggleSpeed (float multiplierX, float multiplierY, float multiplierR)
 Adjusts the menu's wiggle speed along X, Y, and rotation.
 
void SetMenuOffset (Vector2D offset)
 Sets the menu's position offset.
 
void SetMenuSize (Vector2D size)
 Sets the menu's size.
 
MaterialGetFaceMaterial ()
 Retrieves the current face material animator.
 
MaterialGetBackgroundMaterial ()
 Retrieves the current background material animator.
 
- Protected Member Functions inherited from Project
void RenderStartTimer ()
 Starts the render timer for measuring render performance.
 
void RenderEndTimer ()
 Stops the render timer and records the elapsed time.
 
- Protected Attributes inherited from ProtogenProject
EasyEaseAnimator< 60 > eEA = EasyEaseAnimator<60>(IEasyEaseAnimator::Overshoot, 1.0f, 0.35f)
 Animator that eases parameter transitions.
 
HeadsUpDisplay hud = HeadsUpDisplay(Vector2D(0.0f, 0.0f), Vector2D(192.0f, 96.0f))
 Heads-up display (HUD) for the face overlay or additional data.
 
- Protected Attributes inherited from Project
CameraManagercameras
 Pointer to the CameraManager for managing cameras.
 
Controllercontroller
 Pointer to the Controller for controlling the display.
 
Scene scene
 The Scene object representing the rendered environment.
 
RunningAverageFilter< 50 > avgFPS = RunningAverageFilter<50>(0.05f)
 Running average filter for frame rate calculation.
 
long previousAnimationTime = 0
 Time of the previous animation frame in microseconds.
 
long previousRenderTime = 0
 Time of the previous render frame in microseconds.
 
long previousDisplayTime = 0
 Time of the previous display frame in microseconds.
 
float fade = 0.0f
 Fade parameter for animations.
 
float animationTime = 0.0f
 Time spent on animation in milliseconds.
 
float renderTime = 0.0f
 Time spent on rendering in milliseconds.
 
float displayTime = 0.0f
 Time spent on display in milliseconds.
 

Detailed Description

Definition at line 15 of file DrGonzoProject.h.

Constructor & Destructor Documentation

◆ DrGonzoProject()

Member Function Documentation

◆ Angy()

void Angy ( )
inlineprivate

Definition at line 94 of file DrGonzoProject.h.

References ProtogenProject::AddParameterFrame(), and tears.

Referenced by Update().

◆ Boop()

void Boop ( )
inlineprivate

Definition at line 199 of file DrGonzoProject.h.

References ProtogenProject::AddParameterFrame(), and tears.

Referenced by Update().

◆ Default()

void Default ( )
inlineprivate

Definition at line 84 of file DrGonzoProject.h.

References tears.

Referenced by Update().

◆ Dizzy()

void Dizzy ( )
inlineprivate

Definition at line 172 of file DrGonzoProject.h.

References ProtogenProject::AddParameterFrame(), ProtogenProject::DisableBlinking(), and tears.

Referenced by Update().

◆ Happy()

void Happy ( )
inlineprivate

Definition at line 88 of file DrGonzoProject.h.

References ProtogenProject::AddParameterFrame(), and tears.

Referenced by Update().

◆ Lewd()

◆ LinkControlParameters()

◆ Loading()

◆ OwO()

void OwO ( )
inlineprivate

Definition at line 189 of file DrGonzoProject.h.

References ProtogenProject::AddParameterFrame(), ProtogenProject::DisableBlinking(), and tears.

Referenced by Update().

◆ Question()

void Question ( )
inlineprivate

Definition at line 164 of file DrGonzoProject.h.

References ProtogenProject::AddParameterFrame(), ProtogenProject::DisableBlinking(), and tears.

Referenced by Update().

◆ Sad()

void Sad ( )
inlineprivate

Definition at line 179 of file DrGonzoProject.h.

References ProtogenProject::AddParameterFrame(), drip1, drip2, drip3, tears, and FunctionGenerator::Update().

Referenced by Update().

◆ Update()

Member Data Documentation

◆ cameras

HUB75DeltaCameraManager cameras
private

Definition at line 17 of file DrGonzoProject.h.

◆ controller

HUB75Controller controller = HUB75Controller(&cameras, 255, 100)
private

Definition at line 18 of file DrGonzoProject.h.

Referenced by Update().

◆ drip1

Definition at line 29 of file DrGonzoProject.h.

Referenced by Sad().

◆ drip2

Definition at line 30 of file DrGonzoProject.h.

Referenced by Sad().

◆ drip3

Definition at line 31 of file DrGonzoProject.h.

Referenced by Sad().

◆ faceArray

const __FlashStringHelper* faceArray[14] = {F("DEFAULT"), F("HAPPY"), F("ANGY"), F("LEWD"), F("LOADING"), F("QUESTION"), F("DIZZY"), F("SAD"), F("OWO"), F("BOOP"), F("AUDIO1"), F("AUDIO2"), F("AUDIO3")}
private

Definition at line 39 of file DrGonzoProject.h.

Referenced by DrGonzoProject().

◆ lBlue

SimpleMaterial lBlue = SimpleMaterial(RGBColor(50, 126, 180))
private

Definition at line 25 of file DrGonzoProject.h.

Referenced by DrGonzoProject(), Lewd(), and LinkControlParameters().

◆ loadingBar

FunctionGenerator loadingBar = FunctionGenerator(FunctionGenerator::Sawtooth, 0.0f, 1.0f, 7.23f)
private

Definition at line 33 of file DrGonzoProject.h.

Referenced by Loading().

◆ morphTransform

MorphTransform<5> morphTransform = MorphTransform<5>(&eEA)
private

Definition at line 37 of file DrGonzoProject.h.

Referenced by LinkControlParameters(), and Update().

◆ pM

DrGonzoFace pM
private

Definition at line 20 of file DrGonzoProject.h.

Referenced by DrGonzoProject(), LinkControlParameters(), and Update().

◆ sideDisplay

DrGonzoSD sideDisplay
private

Definition at line 21 of file DrGonzoProject.h.

Referenced by DrGonzoProject(), LinkControlParameters(), and Update().

◆ sideDisplayMaterial

MaterialAnimator<2> sideDisplayMaterial = MaterialAnimator<2>()
private

Definition at line 27 of file DrGonzoProject.h.

Referenced by DrGonzoProject(), Lewd(), LinkControlParameters(), and Update().

◆ tears

DrGonzoTears tears
private

◆ tearTransform

Transform tearTransform
private

Definition at line 35 of file DrGonzoProject.h.

Referenced by Update().


The documentation for this class was generated from the following file: