/** * Copyright 1998-2013 Epic Games, Inc. All Rights Reserved. */ class SplineMeshComponent extends StaticMeshComponent native(Mesh); /** * Structure that holds info about spline, passed to renderer to deform StaticMesh. * Also used by Lightmass, so be sure to update Lightmass::FSplineMeshParams and the static lighting code if this changes! */ struct native SplineMeshParams { /** Start location of spline, in component space */ var vector StartPos; /** Start tangent of spline, in component space */ var vector StartTangent; /** X and Y scale applied to mesh at start of spline */ var vector2D StartScale; /** Roll around spline applied at start */ var float StartRoll; /** Starting offset of the mesh from the spline, in component space */ var vector2D StartOffset; /** End location of spline, in component space */ var vector EndPos; /** End tangent of spline, in component space */ var vector EndTangent; /** X and Y scale applied to mesh at end of spline */ var vector2D EndScale; /** Roll around spline applied at end */ var float EndRoll; /** Ending offset of the mesh from the spline, in component space */ var vector2D EndOffset; }; /** Spline that is used to deform mesh */ var SplineMeshParams SplineParams; /** Axis (in component space) that is used to determine X axis for co-ordinates along spline */ var vector SplineXDir; /** If TRUE, will use smooth interpolation (ease in/out) for Scale, Roll, and Offset along this section of spline. If FALSE, uses linear */ var bool bSmoothInterpRollScale; cpptext { virtual FPrimitiveSceneProxy* CreateSceneProxy(); virtual void UpdateBounds(); virtual UBOOL PointCheck(FCheckResult& Result,const FVector& Location,const FVector& Extent,DWORD TraceFlags); virtual UBOOL LineCheck(FCheckResult& Result,const FVector& End,const FVector& Start,const FVector& Extent,DWORD TraceFlags); /** Allocates an implementation of FStaticLightingMesh that will handle static lighting for this component */ virtual class FStaticMeshStaticLightingMesh* AllocateStaticLightingMesh(INT LODIndex, const TArray& InRelevantLights); /** Calculates the spline transform, including roll, scale, and offset along the spline at a specified distance */ FMatrix CalcSliceTransform(const USplineComponent* SplineComp, const FLOAT DistanceAlong); } defaultproperties { // Temporary hack to avoid self-z-fighting on spline meshes on PC, // Which happens because the shader compiler optimizes the depth only pass differently than the base pass, // Which produces different depth results due to fp imprecision. // This needs to be removed at some point to get rendering performance with spline meshes. bUseAsOccluder=FALSE SplineXDir=(X=1) bUsePrecomputedShadows=TRUE `if(`__TW_) bAcceptsDynamicDecals=False `endif }