/*============================================================================= FlexAsset.uc: Flex Asset. Copyright 1998-2013 Epic Games, Inc. All Rights Reserved. =============================================================================*/ /* A Flex asset contains the particle and constraint data for a shape, such as cloth, rigid body or inflatable, an asset is added to a container by spawning through a particle system or Flex actor */ class FlexAsset extends Object native(Physics) editinlinenew hidecategories(Object); /** The Flex asset type */ enum EFlexAssetType { FLEX_Cloth, // a particle/constraint network FLEX_Solid, // solid sampling of the mesh interior for rigid bodies }; //============================================================================= // Flex Container Parameters //============================================================================= /** The asset type, can either be a thin shell (cloth), or a solid (rigid body) */ var(Common) EFlexAssetType Type; // NVCHANGE_BEGIN: HLLU - Add flex container to flex asset /** The flex container this asset will use. This container can be overwritten by the FlexActor's container */ var (Common) FlexContainer FlexAssetContainerTemplate; /** The phase-id to assign to particles spawned for this mesh. This can be overwritten by the FlexActor's FlexComponentPhaseId */ var (Common) int FlexAssetPhaseId; /** If true then the particles will be auto-assigned a positive phase-id. This bool can be overwritten by the FlexActor's bFlexComponentAutoAssignPhase */ var (Common) bool bFlexAssetAutoAssignPhase; // NVCHANGE_END: HLLU - Add flex container to flex asset /** The per-particle mass to use for the particles, for clothing this value be multiplied by 0-1 dependent on the vertex color */ var(Common) float Mass; /** How much the cloth resists stretching */ var(Cloth) float StretchStiffness; /** How much the cloth resists bending */ var(Cloth) float BendStiffness; /** How strong tethers resist stretching */ var(Cloth) float TetherStiffness; /** How much tethers have to stretch past their rest-length before becoming enabled, 0.1=10% elongation */ var(Cloth) float TetherGive; /** Can be enabled for closed meshes, a volume conserving constraint will be added to the simulation */ var(Inflatable) bool bEnableInflatable; /** The inflatable pressure, a value of 1.0 corresponds to the rest volume, 0.5 corressponds to being deflated by half, and values > 1.0 correspond to over-inflation */ var(Inflatable) float OverPressure; /** The rigid body stiffness */ var(Rigid) float RigidStiffness; /** The spacing to use when sampling solid shapes with particles, this should be close to radius of the container this asset will be spawned in */ var(Rigid) float RigidSamplingDistance; /** Store the rigid body center of mass, not editable */ var vector RigidCenter; var float InflatableStiffness; var float InflatableVolume; // the particles and constraints created from the mesh var array Particles; var array Phases; var array SpringIndices; var array SpringCoefficients; var array SpringRestLengths; // faces for cloth var array Triangles; var array VertexToParticleMap; var transient native const pointer Object {struct FlexExtObject}; cpptext { #if WITH_EDITOR virtual void PostEditChangeProperty(FPropertyChangedEvent& PropertyChangedEvent); #endif // WITH_EDITOR virtual void PostLoad(); virtual void BeginDestroy(); virtual void Serialize(FArchive& Ar); #if WITH_FLEX FlexExtObject* GetFlexExtObject(); #endif //WITH_FLEX void ReImport(const UStaticMesh* Parent); } defaultproperties { Type = FLEX_Cloth // NVCHANGE_BEGIN: HLLU - Add flex container to flex asset FlexAssetPhaseId = 0 bFlexAssetAutoAssignPhase = true // NVCHANGE_END: HLLU - Add flex container to flex asset Mass = 1.0f StretchStiffness = 1.0f BendStiffness = 1.0f TetherStiffness = 1.0f TetherGive = 0.1f bEnableInflatable = false OverPressure = 1.0f InflatableStiffness = 1.0f RigidStiffness = 0.0f RigidSamplingDistance = 40.0f }