146 lines
3.4 KiB
Ucode
146 lines
3.4 KiB
Ucode
/**
|
|
* Copyright 1998-2013 Epic Games, Inc. All Rights Reserved.
|
|
*/
|
|
class FogVolumeDensityInfo extends Info
|
|
showcategories(Movement)
|
|
AutoExpandCategories(FogVolumeDensityInfo)
|
|
ClassGroup(Fog)
|
|
native(FogVolume)
|
|
abstract;
|
|
|
|
/** The fog component which stores data specific to each density function. */
|
|
var() FogVolumeDensityComponent DensityComponent;
|
|
|
|
/**
|
|
* The automatic mesh component, which sizes with this fog volume actor. This mesh component gets rendered with FogMaterial.
|
|
* It is optional, and individual actors can be specified using the FogVolumeActors array instead.
|
|
*/
|
|
var() StaticMeshComponent AutomaticMeshComponent;
|
|
|
|
/** replicated copy of HeightFogComponent's bEnabled property */
|
|
var repnotify bool bEnabled;
|
|
|
|
struct CheckpointRecord
|
|
{
|
|
var bool bEnabled;
|
|
};
|
|
|
|
replication
|
|
{
|
|
if (Role == ROLE_Authority)
|
|
bEnabled;
|
|
}
|
|
|
|
cpptext
|
|
{
|
|
public:
|
|
virtual void Serialize(FArchive& Ar);
|
|
virtual void PostLoad();
|
|
virtual void PostEditImport();
|
|
virtual void SetupDefaultFogVolume();
|
|
}
|
|
|
|
event PostBeginPlay()
|
|
{
|
|
Super.PostBeginPlay();
|
|
|
|
if( DensityComponent != none )
|
|
{
|
|
bEnabled = DensityComponent.bEnabled;
|
|
}
|
|
}
|
|
|
|
simulated event ReplicatedEvent(name VarName)
|
|
{
|
|
if (VarName == 'bEnabled')
|
|
{
|
|
DensityComponent.SetEnabled(bEnabled);
|
|
}
|
|
else
|
|
{
|
|
Super.ReplicatedEvent(VarName);
|
|
}
|
|
}
|
|
|
|
/* epic ===============================================
|
|
* ::OnToggle
|
|
*
|
|
* Scripted support for toggling height fog, checks which
|
|
* operation to perform by looking at the action input.
|
|
*
|
|
* Input 1: turn on
|
|
* Input 2: turn off
|
|
* Input 3: toggle
|
|
*
|
|
* =====================================================
|
|
*/
|
|
simulated function OnToggle(SeqAct_Toggle action)
|
|
{
|
|
if (action.InputLinks[0].bHasImpulse)
|
|
{
|
|
// turn on
|
|
DensityComponent.SetEnabled(TRUE);
|
|
}
|
|
else if (action.InputLinks[1].bHasImpulse)
|
|
{
|
|
// turn off
|
|
DensityComponent.SetEnabled(FALSE);
|
|
}
|
|
else if (action.InputLinks[2].bHasImpulse)
|
|
{
|
|
// toggle
|
|
DensityComponent.SetEnabled(!DensityComponent.bEnabled);
|
|
}
|
|
bEnabled = DensityComponent.bEnabled;
|
|
ForceNetRelevant();
|
|
SetForcedInitialReplicatedProperty(Property'Engine.FogVolumeDensityInfo.bEnabled', (bEnabled == default.bEnabled));
|
|
}
|
|
|
|
function bool ShouldSaveForCheckpoint()
|
|
{
|
|
return (RemoteRole != ROLE_None);
|
|
}
|
|
|
|
function CreateCheckpointRecord(out CheckpointRecord Record)
|
|
{
|
|
Record.bEnabled = bEnabled;
|
|
}
|
|
|
|
function ApplyCheckpointRecord(const out CheckpointRecord Record)
|
|
{
|
|
bEnabled = Record.bEnabled;
|
|
DensityComponent.SetEnabled(bEnabled);
|
|
ForceNetRelevant();
|
|
SetForcedInitialReplicatedProperty(Property'Engine.FogVolumeDensityInfo.bEnabled', (bEnabled == default.bEnabled));
|
|
}
|
|
|
|
defaultproperties
|
|
{
|
|
bStatic=FALSE
|
|
bNoDelete=true
|
|
|
|
Begin Object Class=StaticMeshComponent Name=AutomaticMeshComponent0
|
|
StaticMesh=StaticMesh'EngineMeshes.Cube'
|
|
bCastDynamicShadow=FALSE
|
|
BlockRigidBody=FALSE
|
|
bForceDirectLightMap=FALSE
|
|
bAcceptsDynamicLights=FALSE
|
|
bAcceptsLights=FALSE
|
|
CastShadow=FALSE
|
|
bUsePrecomputedShadows=FALSE
|
|
bAcceptsStaticDecals=FALSE
|
|
bAcceptsDynamicDecals=FALSE
|
|
bUseAsOccluder=FALSE
|
|
bSelectable=FALSE
|
|
bIgnoreOwnerHidden=TRUE
|
|
WireframeColor=(R=100,G=100,B=200,A=255)
|
|
End Object
|
|
|
|
AutomaticMeshComponent=AutomaticMeshComponent0
|
|
Components.Add(AutomaticMeshComponent0)
|
|
|
|
Begin Object Name=Sprite
|
|
SpriteCategoryName="Fog"
|
|
End Object
|
|
}
|