|
|
//====== Copyright � 1996-2005, Valve Corporation, All rights reserved. =======
//
// Purpose:
//
//=============================================================================
#ifndef PROCEDURALPRESETS_H
#define PROCEDURALPRESETS_H
#ifdef _WIN32
#pragma once
#endif
// IMPORTANT - only add preset enums to the END, and NEVER remove or replace any!!!
// (alternatively, fix up every dmx file with presets)
// The proper solution is to change CDmePreset::m_nProceduralType to be a bool m_bIsProceduralType
// and have a non-attribute int as a cached value inferred from the preset's name
enum { PROCEDURAL_PRESET_NOT = 0, PROCEDURAL_PRESET_DEFAULT_CROSSFADE, PROCEDURAL_PRESET_ZERO_CROSSFADE, PROCEDURAL_PRESET_HALF_CROSSFADE, PROCEDRUAL_PRESET_ONE_CROSSFADE, PROCEDURAL_PRESET_HEAD_CROSSFADE, PROCEDURAL_PRESET_IN_CROSSFADE, PROCEDURAL_PRESET_OUT_CROSSFADE, PROCEDURAL_PRESET_INOUT, PROCEDURAL_PRESET_REVEAL, PROCEDURAL_PRESET_PASTE, PROCEDURAL_PRESET_DROP_LAYER, // Provides a blend value for finishing the current modification layer
PROCEDURAL_PRESET_JITTER, PROCEDURAL_PRESET_SMOOTH, PROCEDURAL_PRESET_SHARPEN, PROCEDURAL_PRESET_SOFTEN, PROCEDURAL_PRESET_STAGGER, PROCEDURAL_PRESET_HOLD, // Pushes time samples in falloff toward the green selected region
PROCEDURAL_PRESET_RELEASE, // Pushes time samples in falloff toward the edges of the falloff
PROCEDURAL_PRESET_STEADY, // Smooths the "velocity" of samples in the time selection
PROCEDURAL_PRESET_SPLINE,
// Must be last
NUM_PROCEDURAL_PRESET_TYPES, };
static const char *g_ProceduralPresetNames[ NUM_PROCEDURAL_PRESET_TYPES ] = { "NotProcedural!!!", "Default", "Zero", "Half", "One", "Head", "In", "Out", "Ramp", "Reveal", "Paste", "Drop", "Jitter", "Smooth", "Sharpen", "Soften", "Stagger", "Hold", "Release", "Steady", "Spline", };
#define PROCEDURAL_PRESET_GROUP_NAME "Procedural"
inline char const *GetProceduralPresetName( int nPresetType ) { if ( nPresetType < PROCEDURAL_PRESET_NOT || nPresetType >= NUM_PROCEDURAL_PRESET_TYPES ) return "???"; return g_ProceduralPresetNames[ nPresetType ]; }
inline int ProceduralTypeForPresetName( const char *pPresetName ) { for ( int i = PROCEDURAL_PRESET_NOT; i < NUM_PROCEDURAL_PRESET_TYPES; ++i ) { if ( !V_stricmp( pPresetName, g_ProceduralPresetNames[ i ] ) ) return i; } return -1; }
// Does preset blending only affect timing of samples?
inline bool IsPresetTimeOperation( int nPresetType ) { switch ( nPresetType ) { default: break; case PROCEDURAL_PRESET_STAGGER: case PROCEDURAL_PRESET_STEADY: case PROCEDURAL_PRESET_HOLD: case PROCEDURAL_PRESET_RELEASE: return true; }
return false; }
// Does the preset blend towards a single value
inline bool IsPresetStaticValue( int nPresetType ) { switch ( nPresetType ) { case PROCEDURAL_PRESET_NOT: case PROCEDURAL_PRESET_DEFAULT_CROSSFADE: case PROCEDURAL_PRESET_ZERO_CROSSFADE: case PROCEDURAL_PRESET_HALF_CROSSFADE: case PROCEDRUAL_PRESET_ONE_CROSSFADE: return true; default: return false; }
return false; }
// Should area under time selection be "resampled" into a smooth curve worth of samples before
// the preset operations?
inline bool ShouldPresetPreserveSamples( int nPresetType ) { switch ( nPresetType ) { default: break; case PROCEDURAL_PRESET_STAGGER: case PROCEDURAL_PRESET_STEADY: return true; }
return false; }
#endif // PROCEDURALPRESETS_H
|