1
0
KF2-Dev-Scripts/Engine/Classes/NxForceFieldGeneric.uc
2020-12-13 18:01:13 +03:00

141 lines
4.0 KiB
Ucode

/**
* Copyright 1998-2013 Epic Games, Inc. All Rights Reserved.
*/
class NxForceFieldGeneric extends NxForceField
native(ForceField)
placeable;
var() editinline ForceFieldShape Shape;
var ActorComponent DrawComponent;
/* the Shape's internal 3 directional radii, for level designers to know the rough size of the force field*/
var() float RoughExtentX;
var() float RoughExtentY;
var() float RoughExtentZ;
/** Type of Coordinates that can be used to define the force field */
enum FFG_ForceFieldCoordinates
{
FFG_CARTESIAN,
FFG_SPHERICAL,
FFG_CYLINDRICAL,
FFG_TOROIDAL
};
/** Type of Coordinates to define the force field */
var() FFG_ForceFieldCoordinates Coordinates;
/** Constant force vector that is applied inside force volume */
var() vector Constant;
/** Rows of matrix that defines force depending on position */
var() vector PositionMultiplierX;
var() vector PositionMultiplierY;
var() vector PositionMultiplierZ;
/** Vector that defines force depending on position */
var() vector PositionTarget;
/** Rows of matrix that defines force depending on velocity */
var() vector VelocityMultiplierX;
var() vector VelocityMultiplierY;
var() vector VelocityMultiplierZ;
/** Vector that defines force depending on velocity */
var() vector VelocityTarget;
/** Vector that scales random noise added to the force */
var() vector Noise;
/** Linear falloff for vector in chosen coordinate system */
var() vector FalloffLinear;
/** Quadratic falloff for vector in chosen coordinate system */
var() vector FalloffQuadratic;
/** Radius of torus in case toroidal coordinate system is used */
var() float TorusRadius;
/** linear force field kernel */
// NVCHANGE_BEGIN: TSC - making force fields safer & simpler
var const native transient pointer LinearKernel{class NxForceFieldLinearKernel};
// NVCHANGE_END: TSC - making force fields safer & simpler
cpptext
{
virtual void InitRBPhys();
virtual void TermRBPhys(FRBPhysScene* Scene);
virtual void DefineForceFunction(FPointer ForceFieldDesc);
virtual FPointer DefineForceFieldShapeDesc();
virtual void PostEditChangeProperty(FPropertyChangedEvent& PropertyChangedEvent);
#if WITH_EDITOR
virtual void EditorApplyScale(const FVector& DeltaScale, const FMatrix& ScaleMatrix, const FVector* PivotLocation, UBOOL bAltDown, UBOOL bShiftDown, UBOOL bCtrlDown);
#endif
virtual void PostLoad();
}
/**
* This is used to InitRBPhys for a dynamically spawned ForceField.
* Used for starting RBPhsys on dyanmically spawned force fields. This will probably need to set some transient pointer to NULL
**/
native function DoInitRBPhys();
defaultproperties
{
Begin Object Class=SpriteComponent Name=Sprite
Sprite=Texture2D'EditorResources.S_RadForce'
HiddenGame=True
AlwaysLoadOnClient=False
AlwaysLoadOnServer=False
SpriteCategoryName="Physics"
End Object
Components.Add(Sprite)
RemoteRole=ROLE_SimulatedProxy
bNoDelete=true
bAlwaysRelevant=true
NetUpdateFrequency=0.1
bOnlyDirtyReplication=true
CollideWithChannels={(
Default=True,
Pawn=True,
Vehicle=True,
Water=True,
GameplayPhysics=True,
EffectPhysics=True,
Untitled1=True,
Untitled2=True,
Untitled3=True,
FluidDrain=True,
Cloth=True,
SoftBody=True
)}
Coordinates=FFG_CARTESIAN;
Constant=(X=0.0,Y=0.0,Z=0.0);
PositionMultiplierX=(X=0.0,Y=0.0,Z=0.0);
PositionMultiplierY=(X=0.0,Y=0.0,Z=0.0);
PositionMultiplierZ=(X=0.0,Y=0.0,Z=0.0);
PositionTarget=(X=0.0,Y=0.0,Z=0.0);
VelocityMultiplierX=(X=0.0,Y=0.0,Z=0.0);
VelocityMultiplierY=(X=0.0,Y=0.0,Z=0.0);
VelocityMultiplierZ=(X=0.0,Y=0.0,Z=0.0);
VelocityTarget=(X=0.0,Y=0.0,Z=0.0);
FalloffLinear=(X=0.0,Y=0.0,Z=0.0);
FalloffQuadratic=(X=0.0,Y=0.0,Z=0.0);
TorusRadius=1.0;
Noise=(X=0.0,Y=0.0,Z=0.0);
RoughExtentX=200
RoughExtentY=200
RoughExtentZ=200
}