Gah - a solution with more questions. – EntropicLqd

UE3:MaterialInstanceTimeVarying (UDK)

From Unreal Wiki, The Unreal Engine Documentation Site
Jump to: navigation, search
UDK Object >> Surface >> MaterialInterface >> MaterialInstance >> MaterialInstanceTimeVarying
Package: 
Engine
This class in other games:
UT3

When adding new functionality to this you will (sadly) need to touch a number of places:

MaterialInstanceTimeVarying.uc  for the actual data that will be used in the game
MaterialEditorInstanceTimeVarying.uc for the editor property dialog that will be used to edit the data you just added

MaterialInstanceTimeVaryingHelpers.h void UMaterialEditorInstanceTimeVarying::CopyToSourceInstance()

   template< typename MI_TYPE, typename ARRAY_TYPE >    (this copies
   void UpdateParameterValueOverTimeValues(

MaterialInstanceTimeVaryingEditor.cpp void UMaterialEditorInstanceTimeVarying::RegenerateArrays() (each of the different types when it sets each param (ughh!))

MaterialInstanceTimeVarying.cpp void UMaterialInstanceTimeVarying::Set___ (to set the default values)

MaterialInstanceConstant.cpp static void UpdateMICResources(UMaterialInstanceTimeVarying* Instance) (to send the data over to the rendering thread (if it needs it) (hopefully most data can be encapsulated in the 'struct native ParameterValueOverTime' which all of the specialized data structs derrive from

MaterialInstance.h struct FTimeVaryingDataTypeBase

BaseEditior.ini need to look at the [UnrealEd.CustomPropertyItemBindings] and add a new entry for any new types that you create

               (i.e. if you want a specialized PropertySheet view/editing)

Properties

Property group 'MaterialInstanceTimeVarying'

bAutoActivateAll

Type: bool

causes all parameters to start playing immediately *

FontParameterValues

Type: array<FontParameterValueOverTime>

Modifiers: const


ScalarParameterValues

Type: array<ScalarParameterValueOverTime>

Modifiers: const


TextureParameterValues

Type: array<TextureParameterValueOverTime>

Modifiers: const


VectorParameterValues

Type: array<VectorParameterValueOverTime>

Modifiers: const


Internal variables

Duration

Type: float

Modifiers: transient

This sets how long the MITV will be around (i.e. this MITV is owned by a decal which lasts N seconds). It is used for bOffsetFromEnd functionality *

Structs

FontParameterValueOverTime

Extends: ParameterValueOverTime

Modifiers: native

Font FontValue 
int FontPage 

ParameterValueOverTime

Modifiers: native

Object.Guid ExpressionGUID 
float StartTime 
when this is parameter is to start "ticking" then this value will be set to the current game time *
name ParameterName 
bool bLoop 
if true, then the CycleTime is the loop time and time loops *
bool bAutoActivate 
This will auto activate this param *
float CycleTime 
this controls time normalization and the loop time *
bool bNormalizeTime 
if true, then the CycleTime is used to scale time so all keys are between zero and one *
float OffsetTime 
How much time this will wait before actually firing off. This is useful for keeping the curves being just the data for controlling the param and not a bunch of slack in the beginning (e.g. to wait N seconds then start fading) *
bool bOffsetFromEnd 
When using OffsetTime it is nice to be able to offset from the end of the decal's lifetime (e.g. you want to fade out the decal, you want to change the color of the decal before it fades away etc.) *

Default values:

Property Value
bAutoActivate False
bLoop False
bNormalizeTime False
CycleTime 1.0
StartTime -1.0

ScalarParameterValueOverTime

Extends: ParameterValueOverTime

Modifiers: native

float ParameterValue 
This allows MITVs to have both single scalar and curve values *
Object.InterpCurveFloat ParameterValueCurve 
This will automatically be used if there are any values in this Curve *

TextureParameterValueOverTime

Extends: ParameterValueOverTime

Modifiers: native

Texture ParameterValue 

VectorParameterValueOverTime

Extends: ParameterValueOverTime

Modifiers: native

Object.LinearColor ParameterValue 
Object.InterpCurveVector ParameterValueCurve 
This will automatically be used if there are any values in this Curve *

Native functions

ClearParameterValues

native function ClearParameterValues ()

Overrides: MaterialInstance.ClearParameterValues

Removes all parameter values

GetMaxDurationFromAllParameters

native function float GetMaxDurationFromAllParameters ()

This will interrogate all of the parameter and see what the max duration needed for them is. Useful for setting the Duration / or knowing how long this MITV will take *

SetDuration

native function SetDuration (float Value)

This sets how long the MITV will be around (i.e. this MITV is owned by a decal which lasts N seconds) *

SetFontParameterValue

native function SetFontParameterValue (name ParameterName, Font FontValue, int FontPage)

Overrides: MaterialInstance.SetFontParameterValue

Sets the value of the given font parameter.

Parameters:

  • ParameterName - The name of the font parameter
  • OutFontValue - New font value to set for this MIC
  • OutFontPage - New font page value to set for this MIC

SetParent

native function SetParent (MaterialInterface NewParent)

Overrides: MaterialInstance.SetParent


SetScalarCurveParameterValue

native function SetScalarCurveParameterValue (name ParameterName, const out Object.InterpCurveFloat Value)

Overrides: MaterialInstance.SetScalarCurveParameterValue


SetScalarParameterValue

native function SetScalarParameterValue (name ParameterName, float Value)

Overrides: MaterialInstance.SetScalarParameterValue

For MITVs you can utilize both single Scalar values and InterpCurve values.

If there is any data in the InterpCurve, then the MITV will utilize that. Else it will utilize the Scalar value of the same name.

SetScalarStartTime

native function SetScalarStartTime (name ParameterName, float Value)

This sets how long after the MITV has been spawned to start "ticking" the named Scalar InterpCurve *

SetTextureParameterValue

native function SetTextureParameterValue (name ParameterName, Texture Value)

Overrides: MaterialInstance.SetTextureParameterValue


SetVectorCurveParameterValue

native function SetVectorCurveParameterValue (name ParameterName, const out Object.InterpCurveVector Value)


SetVectorParameterValue

native function SetVectorParameterValue (name ParameterName, const out Object.LinearColor Value)

Overrides: MaterialInstance.SetVectorParameterValue


SetVectorStartTime

native function SetVectorStartTime (name ParameterName, float Value)

This sets how long after the MITV has been spawned to start "ticking" the named Scalar InterpCurve *