Overview | Package | Class | Source | Class tree | Glossary | UnrealScript Documentation |
previous class next class | frames no frames |
00001 00002 00003 00004 00005 00006 00007 00008 00009 00010 00011 00012 00013 00014 00015 00016 00017 00018 00019 00020 00021 00022 00023 00024 00025 00026 00027 00028 00029 00030 00031 00032 00033 00034 00035 00036 00037 00038 00039 00040 00041 00042 00043 00044 00045 00046 00047 00048 00049 00050 00051 00052 00053 00054 00055 00056 00057 00058 00059 00060 00061 00062 00063 00064 00065 00066 00067 00068 00069 00070 00071 00072 00073 00074 00075 00076 00077 00078 00079 00080 00081 00082 00083 00084 00085 00086 00087 00088 00089 00090 00091 00092 00093 00094 00095 00096 00097 00098 00099 00100 00101 00102 00103 00104 00105 00106 00107 00108 00109 00110 00111 00112 00113 00114 00115 00116 00117 00118 00119 00120 00121 00122 00123 00124 00125 00126 00127 00128 00129 00130 00131 00132 00133 00134 00135 00136 00137 00138 00139 00140 00141 00142 00143 00144 00145 |
/** * This is a set of AnimSequences * All sequence have the same number of tracks, and they relate to the same bone names. * * Copyright 1998-2011 Epic Games, Inc. All Rights Reserved. */ class AnimSet extends Object native(Anim) hidecategories(Object); /** This is a mapping table between each bone in a particular skeletal mesh and the tracks of this animation set. */ struct native AnimSetMeshLinkup { /** * Mapping table. Size must be same as size of SkelMesh reference skeleton. * No index should be more than the number of tracks in this AnimSet. * -1 indicates no track for this bone - will use reference pose instead. */ var array<INT> BoneToTrackTable; structcpptext { /** Reset this linkup and re-create between the provided skeletal mesh and anim set. */ void BuildLinkup(USkeletalMesh* InSkelMesh, UAnimSet* InAnimSet); } }; /** * Indicates that only the rotation should be taken from the animation sequence and the translation should come from the SkeletalMesh ref pose. * Note that the root bone always takes translation from the animation, even if this flag is set. * You can use the UseTranslationBoneNames array to specify other bones that should use translation with this flag set. */ var() bool bAnimRotationOnly; /** Bone name that each track relates to. TrackBoneName.Num() == Number of tracks. */ var array<name> TrackBoneNames; /** Actual animation sequence information. */ var array<AnimSequence> Sequences; /** Lookup-cache, populated in PostLoad. */ var native transient Map{FName,INT} SequenceCache; /** Non-serialised cache of linkups between different skeletal meshes and this AnimSet. */ var transient array<AnimSetMeshLinkup> LinkupCache; /** Runtime built mapping table between SkeletalMeshes, and LinkupCache array indices. */ var native transient Map{FName,INT} SkelMesh2LinkupCache; /** * Array of booleans that indicate whether or not to read the translation of a bone from animation or ref skeleton. * This is basically a cooked down version of UseTranslationBoneNames for speed. * Size matches the number of tracks. */ var transient Array<byte> BoneUseAnimTranslation; /** Cooked down version of ForceMeshTranslationBoneNames */ var transient Array<byte> ForceUseMeshTranslation; /** Names of bones that should use translation from the animation, if bAnimRotationOnly is set. */ var() Array<name> UseTranslationBoneNames; /** List of bones which are ALWAYS going to use their translation from the mesh and not the animation. */ var() Array<Name> ForceMeshTranslationBoneNames; /** In the AnimSetEditor, when you switch to this AnimSet, it sees if this skeletal mesh is loaded and if so switches to it. */ var name PreviewSkelMeshName; /** Holds the name of the skeletal mesh whose reference skeleton best matches the TrackBoneName array. */ var name BestRatioSkelMeshName; cpptext { // UObject interface virtual void PostLoad(); virtual void BeginDestroy(); virtual void PostEditChangeProperty(FPropertyChangedEvent& PropertyChangedEvent); // UAnimSet interface /** * See if we can play sequences from this AnimSet on the provided SkeletalMesh. * Returns true if there is a bone in SkelMesh for every track in the AnimSet, * or there is a track of animation for every bone of the SkelMesh. * * @param SkelMesh SkeletalMesh to compare the AnimSet against. * @return TRUE if animation set can play on supplied SkeletalMesh, FALSE if not. */ UBOOL CanPlayOnSkeletalMesh(USkeletalMesh* SkelMesh) const; /** Get Ratio of how much that mesh fits that animation set */ FLOAT GetSkeletalMeshMatchRatio(USkeletalMesh* SkelMesh) const; /** * Returns the AnimSequence with the specified name in this set. * * @param SequenceName Name of sequence to find. * @return Pointer to AnimSequence with desired name, or NULL if sequence was not found. */ UAnimSequence* FindAnimSequence(FName SequenceName); /** * Find a mesh linkup table (mapping of sequence tracks to bone indices) for a particular SkeletalMesh * If one does not already exist, create it now. */ INT GetMeshLinkupIndex(USkeletalMesh* SkelMesh); /** * @return The track index for the bone with the supplied name, or INDEX_NONE if no track exists for that bone. */ INT FindTrackWithName(FName BoneName) const { return TrackBoneNames.FindItemIndex( BoneName ); } /** * Returns the size of the object/ resource for display to artists/ LDs in the Editor. * * @return size of resource as to be displayed to artists/ LDs in the Editor. */ INT GetResourceSize(); /** * Clears all sequences and resets the TrackBoneNames table. */ void ResetAnimSet(); /** * Properly remove an AnimSequence from an AnimSet, and updates references it might have. * @return TRUE if AnimSequence was properly removed, FALSE if it wasn't found. */ UBOOL RemoveAnimSequenceFromAnimSet(UAnimSequence* AnimSeq); /** Util that find all AnimSets and flushes their LinkupCache, then calls InitAnimTree on all SkeletalMeshComponents. */ static void ClearAllAnimSetLinkupCaches(); /** * Animation Usage Tracking */ void TraceAnimationUsage(); void RecordAnimationUsage(); static void OutputAnimationUsage(); static void CleanUpAnimationUsage(); static void TickAnimationUsage(); } defaultproperties { bAnimRotationOnly=true } |
Overview | Package | Class | Source | Class tree | Glossary | UnrealScript Documentation |
previous class next class | frames no frames |