Feel  5.1
The best way to improve your game's feel and make it extra juicy
MoreMountains.Feedbacks.MMFeedback Class Referenceabstract

A base class, meant to be extended, defining a Feedback. A Feedback is an action triggered by a MMFeedbacks, usually in reaction to the player's input or actions, to help communicate both emotion and legibility, improving game feel. To create a new feedback, extend this class and override its Custom methods, declared at the end of this class. You can look at the many examples for reference. More...

Inheritance diagram for MoreMountains.Feedbacks.MMFeedback:
MoreMountains.Feedbacks.MMFeedbackBase

Public Member Functions

virtual MMChannelData ChannelData (int channel)
 
virtual void Initialization (GameObject owner)
 Initializes the feedback and its timing related variables More...
 
virtual void Play (Vector3 position, float feedbacksIntensity=1.0f)
 Plays the feedback More...
 
virtual void Stop (Vector3 position, float feedbacksIntensity=1.0f)
 Stops all feedbacks from playing. Will stop repeating feedbacks, and call custom stop implementations More...
 
virtual void ResetFeedback ()
 Calls this feedback's custom reset More...
 
virtual void SetSequence (MMSequence newSequence)
 Use this method to change this feedback's sequence at runtime More...
 
virtual void SetDelayBetweenRepeats (float delay)
 Use this method to specify a new delay between repeats at runtime More...
 
virtual void SetInitialDelay (float delay)
 Use this method to specify a new initial delay at runtime More...
 

Public Attributes

bool Active = true
 whether or not this feedback is active More...
 
string Label = "MMFeedback"
 the name of this feedback to display in the inspector More...
 
float Chance = 100f
 the chance of this feedback happening (in percent : 100 : happens all the time, 0 : never happens, 50 : happens once every two calls, etc) More...
 
MMFeedbackTiming Timing
 a number of timing-related values (delay, repeat, etc) More...
 
bool DebugActive = false
 whether or not this feedback is in debug mode More...
 

Protected Member Functions

virtual void OnEnable ()
 
virtual IEnumerator PlayCoroutine (Vector3 position, float feedbacksIntensity=1.0f)
 An internal coroutine delaying the initial play of the feedback More...
 
virtual void RegularPlay (Vector3 position, float feedbacksIntensity=1.0f)
 Triggers delaying coroutines if needed More...
 
virtual IEnumerator InfinitePlay (Vector3 position, float feedbacksIntensity=1.0f)
 Internal coroutine used for repeated play without end More...
 
virtual IEnumerator RepeatedPlay (Vector3 position, float feedbacksIntensity=1.0f)
 Internal coroutine used for repeated play More...
 
virtual IEnumerator SequenceCoroutine (Vector3 position, float feedbacksIntensity=1.0f)
 A coroutine used to play this feedback on a sequence More...
 
virtual float ApplyDirection (float normalizedTime)
 Returns a new value of the normalized time based on the current play direction of this feedback More...
 
virtual float ApplyTimeMultiplier (float duration)
 Applies the host MMFeedbacks' time multiplier to this feedback More...
 
virtual void CustomInitialization (GameObject owner)
 This method describes all custom initialization processes the feedback requires, in addition to the main Initialization method More...
 
abstract void CustomPlayFeedback (Vector3 position, float feedbacksIntensity=1.0f)
 This method describes what happens when the feedback gets played More...
 
virtual void CustomStopFeedback (Vector3 position, float feedbacksIntensity=1.0f)
 This method describes what happens when the feedback gets stopped More...
 
virtual void CustomReset ()
 This method describes what happens when the feedback gets reset More...
 

Protected Attributes

float _lastPlayTimestamp = -1f
 
int _playsLeft
 
bool _initialized = false
 
Coroutine _playCoroutine
 
Coroutine _infinitePlayCoroutine
 
Coroutine _sequenceCoroutine
 
Coroutine _repeatedPlayCoroutine
 
int _sequenceTrackID = 0
 
MMFeedbacks _hostMMFeedbacks
 
float _beatInterval
 
bool BeatThisFrame = false
 
int LastBeatIndex = 0
 
int CurrentSequenceIndex = 0
 
float LastBeatTimestamp = 0f
 
bool _isHostMMFeedbacksNotNull
 
MMChannelData _channelData
 

Properties

GameObject Owner [get, set]
 the Owner of the feedback, as defined when calling the Initialization method More...
 
virtual IEnumerator Pause [get]
 set this to true if your feedback should pause the execution of the feedback sequence More...
 
virtual bool HoldingPause [get]
 if this is true, this feedback will wait until all previous feedbacks have run More...
 
virtual bool LooperPause [get]
 if this is true, this feedback will wait until all previous feedbacks have run, then run all previous feedbacks again More...
 
virtual bool ScriptDrivenPause [get, set]
 if this is true, this feedback will pause and wait until Resume() is called on its parent MMFeedbacks to resume execution More...
 
virtual float ScriptDrivenPauseAutoResume [get, set]
 if this is a positive value, the feedback will auto resume after that duration if it hasn't been resumed via script already More...
 
virtual bool LooperStart [get]
 if this is true, this feedback will wait until all previous feedbacks have run, then run all previous feedbacks again More...
 
virtual bool InCooldown [get]
 returns true if this feedback is in cooldown at this time (and thus can't play), false otherwise More...
 
virtual bool IsPlaying [get, set]
 if this is true, this feedback is currently playing More...
 
float FeedbackTime [get]
 the time (or unscaled time) based on the selected Timing settings More...
 
float FeedbackDeltaTime [get]
 the delta time (or unscaled delta time) based on the selected Timing settings More...
 
float TotalDuration [get]
 The total duration of this feedback : total = initial delay + duration * (number of repeats + delay between repeats)
More...
 
virtual float FeedbackStartedAt [get]
 
virtual float FeedbackDuration [get, set]
 
virtual bool FeedbackPlaying [get]
 whether or not this feedback is playing right now More...
 
virtual bool NormalPlayDirection [get]
 Returns true if this feedback should play normally, or false if it should play in rewind More...
 
virtual bool ShouldPlayInThisSequenceDirection [get]
 Returns true if this feedback should play in the current parent MMFeedbacks direction, according to its MMFeedbacksDirectionCondition setting More...
 
virtual float? FinalNormalizedTime [get]
 Returns the t value at which to evaluate a curve at the end of this feedback's play time More...
 

Detailed Description

A base class, meant to be extended, defining a Feedback. A Feedback is an action triggered by a MMFeedbacks, usually in reaction to the player's input or actions, to help communicate both emotion and legibility, improving game feel. To create a new feedback, extend this class and override its Custom methods, declared at the end of this class. You can look at the many examples for reference.

Member Function Documentation

◆ ApplyDirection()

virtual float MoreMountains.Feedbacks.MMFeedback.ApplyDirection ( float  normalizedTime)
protectedvirtual

Returns a new value of the normalized time based on the current play direction of this feedback

Parameters
normalizedTime
Returns

◆ ApplyTimeMultiplier()

virtual float MoreMountains.Feedbacks.MMFeedback.ApplyTimeMultiplier ( float  duration)
protectedvirtual

Applies the host MMFeedbacks' time multiplier to this feedback

Parameters
duration
Returns

◆ ChannelData()

virtual MMChannelData MoreMountains.Feedbacks.MMFeedback.ChannelData ( int  channel)
virtual

◆ CustomInitialization()

virtual void MoreMountains.Feedbacks.MMFeedback.CustomInitialization ( GameObject  owner)
protectedvirtual

This method describes all custom initialization processes the feedback requires, in addition to the main Initialization method

Parameters
owner

Reimplemented in MoreMountains.Feedbacks.MMFeedbackBase.

◆ CustomPlayFeedback()

abstract void MoreMountains.Feedbacks.MMFeedback.CustomPlayFeedback ( Vector3  position,
float  feedbacksIntensity = 1.0f 
)
protectedpure virtual

This method describes what happens when the feedback gets played

Parameters
position
feedbacksIntensity

Implemented in MoreMountains.Feedbacks.MMFeedbackBase.

◆ CustomReset()

virtual void MoreMountains.Feedbacks.MMFeedback.CustomReset ( )
protectedvirtual

This method describes what happens when the feedback gets reset

◆ CustomStopFeedback()

virtual void MoreMountains.Feedbacks.MMFeedback.CustomStopFeedback ( Vector3  position,
float  feedbacksIntensity = 1.0f 
)
protectedvirtual

This method describes what happens when the feedback gets stopped

Parameters
position
feedbacksIntensity

Reimplemented in MoreMountains.Feedbacks.MMFeedbackBase.

◆ InfinitePlay()

virtual IEnumerator MoreMountains.Feedbacks.MMFeedback.InfinitePlay ( Vector3  position,
float  feedbacksIntensity = 1.0f 
)
protectedvirtual

Internal coroutine used for repeated play without end

Parameters
position
feedbacksIntensity
Returns

◆ Initialization()

virtual void MoreMountains.Feedbacks.MMFeedback.Initialization ( GameObject  owner)
virtual

Initializes the feedback and its timing related variables

Parameters
owner

◆ OnEnable()

virtual void MoreMountains.Feedbacks.MMFeedback.OnEnable ( )
protectedvirtual

◆ Play()

virtual void MoreMountains.Feedbacks.MMFeedback.Play ( Vector3  position,
float  feedbacksIntensity = 1.0f 
)
virtual

Plays the feedback

Parameters
position
feedbacksIntensity

◆ PlayCoroutine()

virtual IEnumerator MoreMountains.Feedbacks.MMFeedback.PlayCoroutine ( Vector3  position,
float  feedbacksIntensity = 1.0f 
)
protectedvirtual

An internal coroutine delaying the initial play of the feedback

Parameters
position
feedbacksIntensity
Returns

◆ RegularPlay()

virtual void MoreMountains.Feedbacks.MMFeedback.RegularPlay ( Vector3  position,
float  feedbacksIntensity = 1.0f 
)
protectedvirtual

Triggers delaying coroutines if needed

Parameters
position
feedbacksIntensity

◆ RepeatedPlay()

virtual IEnumerator MoreMountains.Feedbacks.MMFeedback.RepeatedPlay ( Vector3  position,
float  feedbacksIntensity = 1.0f 
)
protectedvirtual

Internal coroutine used for repeated play

Parameters
position
feedbacksIntensity
Returns

◆ ResetFeedback()

virtual void MoreMountains.Feedbacks.MMFeedback.ResetFeedback ( )
virtual

Calls this feedback's custom reset

◆ SequenceCoroutine()

virtual IEnumerator MoreMountains.Feedbacks.MMFeedback.SequenceCoroutine ( Vector3  position,
float  feedbacksIntensity = 1.0f 
)
protectedvirtual

A coroutine used to play this feedback on a sequence

Parameters
position
feedbacksIntensity
Returns

◆ SetDelayBetweenRepeats()

virtual void MoreMountains.Feedbacks.MMFeedback.SetDelayBetweenRepeats ( float  delay)
virtual

Use this method to specify a new delay between repeats at runtime

Parameters
delay

◆ SetInitialDelay()

virtual void MoreMountains.Feedbacks.MMFeedback.SetInitialDelay ( float  delay)
virtual

Use this method to specify a new initial delay at runtime

Parameters
delay

◆ SetSequence()

virtual void MoreMountains.Feedbacks.MMFeedback.SetSequence ( MMSequence  newSequence)
virtual

Use this method to change this feedback's sequence at runtime

Parameters
newSequence

◆ Stop()

virtual void MoreMountains.Feedbacks.MMFeedback.Stop ( Vector3  position,
float  feedbacksIntensity = 1.0f 
)
virtual

Stops all feedbacks from playing. Will stop repeating feedbacks, and call custom stop implementations

Parameters
position
feedbacksIntensity

Member Data Documentation

◆ _beatInterval

float MoreMountains.Feedbacks.MMFeedback._beatInterval
protected

◆ _channelData

MMChannelData MoreMountains.Feedbacks.MMFeedback._channelData
protected

◆ _hostMMFeedbacks

MMFeedbacks MoreMountains.Feedbacks.MMFeedback._hostMMFeedbacks
protected

◆ _infinitePlayCoroutine

Coroutine MoreMountains.Feedbacks.MMFeedback._infinitePlayCoroutine
protected

◆ _initialized

bool MoreMountains.Feedbacks.MMFeedback._initialized = false
protected

◆ _isHostMMFeedbacksNotNull

bool MoreMountains.Feedbacks.MMFeedback._isHostMMFeedbacksNotNull
protected

◆ _lastPlayTimestamp

float MoreMountains.Feedbacks.MMFeedback._lastPlayTimestamp = -1f
protected

◆ _playCoroutine

Coroutine MoreMountains.Feedbacks.MMFeedback._playCoroutine
protected

◆ _playsLeft

int MoreMountains.Feedbacks.MMFeedback._playsLeft
protected

◆ _repeatedPlayCoroutine

Coroutine MoreMountains.Feedbacks.MMFeedback._repeatedPlayCoroutine
protected

◆ _sequenceCoroutine

Coroutine MoreMountains.Feedbacks.MMFeedback._sequenceCoroutine
protected

◆ _sequenceTrackID

int MoreMountains.Feedbacks.MMFeedback._sequenceTrackID = 0
protected

◆ Active

bool MoreMountains.Feedbacks.MMFeedback.Active = true

whether or not this feedback is active

◆ BeatThisFrame

bool MoreMountains.Feedbacks.MMFeedback.BeatThisFrame = false
protected

◆ Chance

float MoreMountains.Feedbacks.MMFeedback.Chance = 100f

the chance of this feedback happening (in percent : 100 : happens all the time, 0 : never happens, 50 : happens once every two calls, etc)

◆ CurrentSequenceIndex

int MoreMountains.Feedbacks.MMFeedback.CurrentSequenceIndex = 0
protected

◆ DebugActive

bool MoreMountains.Feedbacks.MMFeedback.DebugActive = false

whether or not this feedback is in debug mode

◆ Label

string MoreMountains.Feedbacks.MMFeedback.Label = "MMFeedback"

the name of this feedback to display in the inspector

◆ LastBeatIndex

int MoreMountains.Feedbacks.MMFeedback.LastBeatIndex = 0
protected

◆ LastBeatTimestamp

float MoreMountains.Feedbacks.MMFeedback.LastBeatTimestamp = 0f
protected

◆ Timing

MMFeedbackTiming MoreMountains.Feedbacks.MMFeedback.Timing

a number of timing-related values (delay, repeat, etc)

Property Documentation

◆ FeedbackDeltaTime

float MoreMountains.Feedbacks.MMFeedback.FeedbackDeltaTime
get

the delta time (or unscaled delta time) based on the selected Timing settings

◆ FeedbackDuration

virtual float MoreMountains.Feedbacks.MMFeedback.FeedbackDuration
getset

◆ FeedbackPlaying

virtual bool MoreMountains.Feedbacks.MMFeedback.FeedbackPlaying
get

whether or not this feedback is playing right now

◆ FeedbackStartedAt

virtual float MoreMountains.Feedbacks.MMFeedback.FeedbackStartedAt
get

◆ FeedbackTime

float MoreMountains.Feedbacks.MMFeedback.FeedbackTime
get

the time (or unscaled time) based on the selected Timing settings

◆ FinalNormalizedTime

virtual float? MoreMountains.Feedbacks.MMFeedback.FinalNormalizedTime
getprotected

Returns the t value at which to evaluate a curve at the end of this feedback's play time

◆ HoldingPause

virtual bool MoreMountains.Feedbacks.MMFeedback.HoldingPause
get

if this is true, this feedback will wait until all previous feedbacks have run

◆ InCooldown

virtual bool MoreMountains.Feedbacks.MMFeedback.InCooldown
get

returns true if this feedback is in cooldown at this time (and thus can't play), false otherwise

an overridable color for your feedback, that can be redefined per feedback. White is the only reserved color, and the feedback will revert to normal (light or dark skin) when left to White

◆ IsPlaying

virtual bool MoreMountains.Feedbacks.MMFeedback.IsPlaying
getset

if this is true, this feedback is currently playing

◆ LooperPause

virtual bool MoreMountains.Feedbacks.MMFeedback.LooperPause
get

if this is true, this feedback will wait until all previous feedbacks have run, then run all previous feedbacks again

◆ LooperStart

virtual bool MoreMountains.Feedbacks.MMFeedback.LooperStart
get

if this is true, this feedback will wait until all previous feedbacks have run, then run all previous feedbacks again

◆ NormalPlayDirection

virtual bool MoreMountains.Feedbacks.MMFeedback.NormalPlayDirection
get

Returns true if this feedback should play normally, or false if it should play in rewind

◆ Owner

GameObject MoreMountains.Feedbacks.MMFeedback.Owner
getset

the Owner of the feedback, as defined when calling the Initialization method

◆ Pause

virtual IEnumerator MoreMountains.Feedbacks.MMFeedback.Pause
get

set this to true if your feedback should pause the execution of the feedback sequence

◆ ScriptDrivenPause

virtual bool MoreMountains.Feedbacks.MMFeedback.ScriptDrivenPause
getset

if this is true, this feedback will pause and wait until Resume() is called on its parent MMFeedbacks to resume execution

◆ ScriptDrivenPauseAutoResume

virtual float MoreMountains.Feedbacks.MMFeedback.ScriptDrivenPauseAutoResume
getset

if this is a positive value, the feedback will auto resume after that duration if it hasn't been resumed via script already

◆ ShouldPlayInThisSequenceDirection

virtual bool MoreMountains.Feedbacks.MMFeedback.ShouldPlayInThisSequenceDirection
get

Returns true if this feedback should play in the current parent MMFeedbacks direction, according to its MMFeedbacksDirectionCondition setting

◆ TotalDuration

float MoreMountains.Feedbacks.MMFeedback.TotalDuration
get

The total duration of this feedback : total = initial delay + duration * (number of repeats + delay between repeats)


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