101 lines
2.4 KiB
Ucode
101 lines
2.4 KiB
Ucode
|
/**
|
||
|
* Copyright 1998-2013 Epic Games, Inc. All Rights Reserved.
|
||
|
*/
|
||
|
class RB_LineImpulseActor extends RigidBodyBase
|
||
|
native(Physics)
|
||
|
placeable;
|
||
|
|
||
|
/**
|
||
|
* Similar to the RB_RadialImpulseActor, but does a line-check and applies an impulse to all Actors using rigid-bodies that it hits.
|
||
|
*/
|
||
|
|
||
|
|
||
|
cpptext
|
||
|
{
|
||
|
// UObject interface
|
||
|
virtual void PostEditChangeProperty(FPropertyChangedEvent& PropertyChangedEvent);
|
||
|
|
||
|
#if WITH_EDITOR
|
||
|
// AActor interface.
|
||
|
virtual void EditorApplyScale(const FVector& DeltaScale, const FMatrix& ScaleMatrix, const FVector* PivotLocation, UBOOL bAltDown, UBOOL bShiftDown, UBOOL bCtrlDown);
|
||
|
#endif
|
||
|
}
|
||
|
|
||
|
/** Strength of impulse to apply to actors hit by the line check. */
|
||
|
var() interp float ImpulseStrength;
|
||
|
|
||
|
/** Length of line to check along. */
|
||
|
var() float ImpulseRange;
|
||
|
|
||
|
/** If true, the Strength is taken as a change in velocity instead of an impulse (ie. mass will have no affect). */
|
||
|
var() bool bVelChange;
|
||
|
|
||
|
/** If an impulse should only be applied to the first thing the line hits, or all things in the lines path. */
|
||
|
var() bool bStopAtFirstHit;
|
||
|
|
||
|
/** If true, will cause FracturedStaticMeshActor fragment hit by ray to break. */
|
||
|
var() bool bCauseFracture;
|
||
|
|
||
|
var ArrowComponent Arrow;
|
||
|
|
||
|
var repnotify byte ImpulseCount;
|
||
|
|
||
|
replication
|
||
|
{
|
||
|
if (bNetDirty)
|
||
|
ImpulseCount;
|
||
|
}
|
||
|
|
||
|
/** Do the line check and apply impulse now. */
|
||
|
native final function FireLineImpulse();
|
||
|
|
||
|
/** Handling Toggle event from Kismet. */
|
||
|
simulated function OnToggle(SeqAct_Toggle inAction)
|
||
|
{
|
||
|
if (inAction.InputLinks[0].bHasImpulse)
|
||
|
{
|
||
|
FireLineImpulse();
|
||
|
ImpulseCount++;
|
||
|
bForceNetUpdate = TRUE;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
simulated event ReplicatedEvent(name VarName)
|
||
|
{
|
||
|
if (VarName == 'ImpulseCount')
|
||
|
{
|
||
|
FireLineImpulse();
|
||
|
}
|
||
|
}
|
||
|
|
||
|
defaultproperties
|
||
|
{
|
||
|
Begin Object Class=ArrowComponent Name=ArrowComponent0
|
||
|
ArrowSize=4.16667
|
||
|
ArrowColor=(R=255,G=0,B=0)
|
||
|
bTreatAsASprite=True
|
||
|
SpriteCategoryName="Physics"
|
||
|
End Object
|
||
|
Arrow=ArrowComponent0
|
||
|
Components.Add(ArrowComponent0)
|
||
|
|
||
|
Begin Object Class=SpriteComponent Name=Sprite
|
||
|
Sprite=Texture2D'EditorResources.S_LineImpulse'
|
||
|
HiddenGame=True
|
||
|
AlwaysLoadOnClient=False
|
||
|
AlwaysLoadOnServer=False
|
||
|
SpriteCategoryName="Physics"
|
||
|
End Object
|
||
|
Components.Add(Sprite)
|
||
|
|
||
|
ImpulseStrength=900.0
|
||
|
ImpulseRange=200.0
|
||
|
|
||
|
bEdShouldSnap=true
|
||
|
RemoteRole=ROLE_SimulatedProxy
|
||
|
bNoDelete=true
|
||
|
bAlwaysRelevant=true
|
||
|
NetUpdateFrequency=0.1
|
||
|
bOnlyDirtyReplication=true
|
||
|
}
|