Edited the log only, switched over to my model pawn so I don't have to sift through animation code log notes.
I'm having an issue with having my Pawn remain registered as "in this current zone" in code, the player is detected as they enter the zone, but they don't stay registered according to my log. What should be happening is they are found, their camera that they are associated with via assignments from the camera is found, the camera is associated with this zone, and code is passed to the camera based on conditions. But as I try to put my code into the state that it needs to be ('Active'), something is happening and the Player isn't being detected past ActorEntered. The following is all I get regarding the log involving the player. I should be getting a ScriptLog that says ("Active") every tick (for testing purposes), but I am not seeing a single ("Active") in my log. Can anyone help me with this?
ScriptLog: ActorEntered1 Autoplay.RPG_TestMale3D0
ScriptLog: ActorEntered2 Autoplay.RPG_TestMale3D0
ScriptLog: ActorLeaving1
ScriptLog: Inactive
ScriptLog: ActorLeaving1
ScriptLog: ActorLeaving1
ScriptLog: ActorLeaving1
ScriptLog: ActorLeaving1
ScriptLog: ActorLeaving1
ScriptLog: ActorEntered1 Autoplay.RPG_TestMale3D0
ScriptLog: ActorEntered2 Autoplay.RPG_TestMale3D0
ScriptLog: ActorLeaving1
ScriptLog: Inactive
Actor Entered Leaving Code
Code: Select all
//=============================================================================
// General functionality
//=============================================================================
event ActorEntered( actor Other )
{
if ( RPG_PlatformPawn(Other)!=None && RPG_PlatformPawn(Other).bIsPlayer )
{
LocalPlayer = RPG_PlatformPawn(Other);
log("ActorEntered1" @ LocalPlayer);
if ( ( LocalPlayer != none && ViewPort(LocalPlayer.Player) != none ) &&
LocalPlayer.bHasActiveCamera && LocalPlayer.ActiveCamera != none )
{
log("ActorEntered2" @ LocalPlayer);
ActiveCamera = LocalPlayer.ActiveCamera;
GoToState('Active');
if ( Self.Event != '' )
TriggerEvent( Event, self, RPG_PlatformPawn(Other) );
}
}
super.ActorEntered( Other );
}
// @Override
event ActorLeaving( actor Other )
{
if ( RPG_PlatformPawn(Other) == None )
{
log("ActorLeaving1");
LocalPlayer = none;
GoToState('Inactive');
}
super.ActorLeaving( Other );
}
State Code
Code: Select all
//=============================================================================
// State Code
//=============================================================================
auto state Inactive
{
function BeginState()
{
log("Inactive");
return;
}
}
state Active
{
event Tick( float DeltaTime )
{
[...]
}
[...]
Begin:
log("Active");
SetCameraMode();
if ( (LocalPlayer == none || LocalPlayer.bDeleteMe || LocalPlayer.Health <= 0) ||
( LocalPlayer.ActiveCamera == none && LocalPlayer.bHasActiveCamera == false )
|| ActiveCamera == none)
GoToState('Inactive');
Sleep(PositionUpdateRate);
GoTo('Begin');
}
Full Actor Code For Reference
Code: Select all
//=============================================================================
// RPG_CameraOpZone.
//=============================================================================
class RPG_CameraOpZone extends ZoneInfo;
enum ECamMode
{
CM_Track1,
CM_Track2,
CM_CustomCamDistance1,
CM_CustomCamDistance2,
CM_MoveTransition
};
var ECamMode NewCameraMode;
enum EVect1CamMode
{
CM_None,
CM_Track1,
CM_Track2,
CM_CustomCamDistance1,
CM_CustomCamDistance2
};
var() EVect1CamMode Vect1CamMode;
enum EVect2CamMode
{
CM_None,
CM_Track1,
CM_Track2,
CM_CustomCamDistance1,
CM_CustomCamDistance2
};
var() EVect2CamMode Vect2CamMode;
enum EVect3CamMode
{
CM_None,
CM_Track1,
CM_Track2,
CM_CustomCamDistance1,
CM_CustomCamDistance2
};
var() EVect3CamMode Vect3CamMode;
enum EVect4CamMode
{
CM_None,
CM_Track1,
CM_Track2,
CM_CustomCamDistance1,
CM_CustomCamDistance2
};
var() EVect4CamMode Vect4CamMode;
var RPG_PlatformPawn LocalPlayer;
var RPG_Camera ActiveCamera;
//var() byte TriggerGroupID; // Used for when CameraSwitchers are to be used as a trigger. Used to prevent triggers from constantly firing.
//var() float TriggerGroupScanDist;
//var() float SmoothFactor; // To be described later
var byte SharedCameraID;
var() float TrackCustomDistance;
var() float PositionUpdateRate;
var() rotator NewRotation;
var vector NewCamLoc; // For fixed or X,Y track mode, if Zero, use camera's current
//var() bool bSmoothTransition;
var() bool bCamXAxisLock;
var() bool bCamYAxisLock;
var() bool bCamZAxisLock;
var() bool bRestorePitch;
var() bool bRestoreYaw;
var() bool bRestoreRoll;
var() bool bInstantLocTransition;
//=====================================
// What SharedCameraID will be set to
//=====================================
var(RPG_CamLoc1) byte CamID1;
var(RPG_CamLoc2) byte CamID2;
var(RPG_CamLoc3) byte CamID3;
var(RPG_CamLoc4) byte CamID4;
//=====================================
// New Camera Position
//=====================================
var(RPG_CamLoc1) vector CamAngle1;
var(RPG_CamLoc2) vector CamAngle2;
var(RPG_CamLoc3) vector CamAngle3;
var(RPG_CamLoc4) vector CamAngle4;
//=====================================
// Position Pawn Needs To Be In For Camera Position Change
//=====================================
var(RPG_CamLoc1) vector MoveCamVector1;
var(RPG_CamLoc2) vector MoveCamVector2;
var(RPG_CamLoc3) vector MoveCamVector3;
var(RPG_CamLoc4) vector MoveCamVector4;
//=====================================
// Should Position Be Checked
//=====================================
var(RPG_CamLoc1) bool bCheckCamVector1;
var(RPG_CamLoc2) bool bCheckCamVector2;
var(RPG_CamLoc3) bool bCheckCamVector3;
var(RPG_CamLoc4) bool bCheckCamVector4;
//=====================================
// Checks Player's X Coordinate
// Pos: If Player X is Greater Than Position X
// Neg: If Player X Is Less Than Position X
//=====================================
var(RPG_CamLoc1) bool bCheckPlayer_X_Pos_1;
var(RPG_CamLoc2) bool bCheckPlayer_X_Pos_2;
var(RPG_CamLoc3) bool bCheckPlayer_X_Pos_3;
var(RPG_CamLoc4) bool bCheckPlayer_X_Pos_4;
var(RPG_CamLoc1) bool bCheckPlayer_X_Neg_1;
var(RPG_CamLoc2) bool bCheckPlayer_X_Neg_2;
var(RPG_CamLoc3) bool bCheckPlayer_X_Neg_3;
var(RPG_CamLoc4) bool bCheckPlayer_X_Neg_4;
//=====================================
// Checks Player's Y Coordinate
//=====================================
var(RPG_CamLoc1) bool bCheckPlayer_Y_Pos_1;
var(RPG_CamLoc2) bool bCheckPlayer_Y_Pos_2;
var(RPG_CamLoc3) bool bCheckPlayer_Y_Pos_3;
var(RPG_CamLoc4) bool bCheckPlayer_Y_Pos_4;
var(RPG_CamLoc1) bool bCheckPlayer_Y_Neg_1;
var(RPG_CamLoc2) bool bCheckPlayer_Y_Neg_2;
var(RPG_CamLoc3) bool bCheckPlayer_Y_Neg_3;
var(RPG_CamLoc4) bool bCheckPlayer_Y_Neg_4;
//=====================================
// Checks Player's Z Coordinate
//=====================================
var(RPG_CamLoc1) bool bCheckPlayer_Z_Pos_1;
var(RPG_CamLoc2) bool bCheckPlayer_Z_Pos_2;
var(RPG_CamLoc3) bool bCheckPlayer_Z_Pos_3;
var(RPG_CamLoc4) bool bCheckPlayer_Z_Pos_4;
var(RPG_CamLoc1) bool bCheckPlayer_Z_Neg_1;
var(RPG_CamLoc2) bool bCheckPlayer_Z_Neg_2;
var(RPG_CamLoc3) bool bCheckPlayer_Z_Neg_3;
var(RPG_CamLoc4) bool bCheckPlayer_Z_Neg_4;
//=============================================================================
// General functionality
//=============================================================================
event ActorEntered( actor Other )
{
if ( RPG_PlatformPawn(Other)!=None && RPG_PlatformPawn(Other).bIsPlayer )
{
LocalPlayer = RPG_PlatformPawn(Other);
log("ActorEntered1" @ LocalPlayer);
if ( ( LocalPlayer != none && ViewPort(LocalPlayer.Player) != none ) &&
LocalPlayer.bHasActiveCamera && LocalPlayer.ActiveCamera != none )
{
log("ActorEntered2" @ LocalPlayer);
ActiveCamera = LocalPlayer.ActiveCamera;
GoToState('Active');
if ( Self.Event != '' )
TriggerEvent( Event, self, RPG_PlatformPawn(Other) );
}
}
super.ActorEntered( Other );
}
// @Override
event ActorLeaving( actor Other )
{
if ( RPG_PlatformPawn(Other) == None )
{
log("ActorLeaving1");
LocalPlayer = none;
GoToState('Inactive');
}
super.ActorLeaving( Other );
}
//=============================================================================
// State Code
//=============================================================================
auto state Inactive
{
function BeginState()
{
log("Inactive");
return;
}
}
state Active
{
event Tick( float DeltaTime )
{
if ( bCheckCamVector1 == true )
{
if ( bCheckPlayer_X_Pos_1 == true && (LocalPlayer.Location.X >= MoveCamVector1.X) )
{
NewCamLoc = CamAngle1;
SharedCameraID = CamID1;
}
if ( bCheckPlayer_X_Neg_1 == true && (LocalPlayer.Location.X <= MoveCamVector1.X) )
{
NewCamLoc = CamAngle1;
SharedCameraID = CamID1;
}
if ( bCheckPlayer_Y_Pos_1 == true && (LocalPlayer.Location.Y >= MoveCamVector1.Y) )
{
NewCamLoc = CamAngle1;
SharedCameraID = CamID1;
}
if ( bCheckPlayer_Y_Neg_1 == true && (LocalPlayer.Location.Y <= MoveCamVector1.Y) )
{
NewCamLoc = CamAngle1;
SharedCameraID = CamID1;
}
if ( bCheckPlayer_Z_Pos_1 == true && (LocalPlayer.Location.Z >= MoveCamVector1.Z) )
{
NewCamLoc = CamAngle1;
SharedCameraID = CamID1;
}
if ( bCheckPlayer_Z_Neg_1== true && (LocalPlayer.Location.Z <= MoveCamVector1.Z) )
{
NewCamLoc = CamAngle1;
SharedCameraID = CamID1;
}
}
if ( bCheckCamVector2 == true )
{
if ( bCheckPlayer_X_Pos_2 == true && (LocalPlayer.Location.X >= MoveCamVector2.X) )
{
NewCamLoc = CamAngle2;
SharedCameraID = CamID2;
}
if ( bCheckPlayer_X_Neg_2 == true && (LocalPlayer.Location.X <= MoveCamVector2.X) )
{
NewCamLoc = CamAngle2;
SharedCameraID = CamID2;
}
if ( bCheckPlayer_Y_Pos_2 == true && (LocalPlayer.Location.Y >= MoveCamVector2.Y) )
{
NewCamLoc = CamAngle2;
SharedCameraID = CamID2;
}
if ( bCheckPlayer_Y_Neg_2 == true && (LocalPlayer.Location.Y <= MoveCamVector2.Y) )
{
NewCamLoc = CamAngle2;
SharedCameraID = CamID2;
}
if ( bCheckPlayer_Z_Pos_2 == true && (LocalPlayer.Location.Z >= MoveCamVector2.Z) )
{
NewCamLoc = CamAngle2;
SharedCameraID = CamID2;
}
if ( bCheckPlayer_Z_Neg_2 == true && (LocalPlayer.Location.Z <= MoveCamVector2.Z) )
{
NewCamLoc = CamAngle2;
SharedCameraID = CamID2;
}
}
if ( bCheckCamVector3 == true )
{
if ( bCheckPlayer_X_Pos_3 == true && (LocalPlayer.Location.X >= MoveCamVector3.X) )
{
NewCamLoc = CamAngle3;
SharedCameraID = CamID3;
}
if ( bCheckPlayer_X_Neg_3 == true && (LocalPlayer.Location.X <= MoveCamVector3.X) )
{
NewCamLoc = CamAngle3;
SharedCameraID = CamID3;
}
if ( bCheckPlayer_Y_Pos_3 == true && (LocalPlayer.Location.Y >= MoveCamVector3.Y) )
{
NewCamLoc = CamAngle3;
SharedCameraID = CamID3;
}
if ( bCheckPlayer_Y_Neg_3 == true && (LocalPlayer.Location.Y <= MoveCamVector3.Y) )
{
NewCamLoc = CamAngle3;
SharedCameraID = CamID3;
}
if ( bCheckPlayer_Z_Pos_3 == true && (LocalPlayer.Location.Z >= MoveCamVector3.Z) )
{
NewCamLoc = CamAngle3;
SharedCameraID = CamID3;
}
if ( bCheckPlayer_Z_Neg_3 == true && (LocalPlayer.Location.Z <= MoveCamVector3.Z) )
{
NewCamLoc = CamAngle3;
SharedCameraID = CamID3;
}
}
if ( bCheckCamVector4 == true )
{
if ( bCheckPlayer_X_Pos_4 == true && (LocalPlayer.Location.X >= MoveCamVector4.X) )
{
NewCamLoc = CamAngle4;
SharedCameraID = CamID4;
}
if ( bCheckPlayer_X_Neg_4 == true && (LocalPlayer.Location.X <= MoveCamVector4.X) )
{
NewCamLoc = CamAngle4;
SharedCameraID = CamID4;
}
if ( bCheckPlayer_Y_Pos_4 == true && (LocalPlayer.Location.Y >= MoveCamVector4.Y) )
{
NewCamLoc = CamAngle4;
SharedCameraID = CamID4;
}
if ( bCheckPlayer_Y_Neg_4 == true && (LocalPlayer.Location.Y <= MoveCamVector4.Y) )
{
NewCamLoc = CamAngle4;
SharedCameraID = CamID4;
}
if ( bCheckPlayer_Z_Pos_4 == true && (LocalPlayer.Location.Z >= MoveCamVector4.Z) )
{
NewCamLoc = CamAngle4;
SharedCameraID = CamID4;
}
if ( bCheckPlayer_Z_Neg_4 == true && (LocalPlayer.Location.Z <= MoveCamVector4.Z) )
{
NewCamLoc = CamAngle4;
SharedCameraID = CamID4;
}
}
}
function EndState()
{
super.EndState();
}
Begin:
log("Active");
SetCameraMode();
if ( (LocalPlayer == none || LocalPlayer.bDeleteMe || LocalPlayer.Health <= 0) ||
( LocalPlayer.ActiveCamera == none && LocalPlayer.bHasActiveCamera == false )
|| ActiveCamera == none)
GoToState('Inactive');
Sleep(PositionUpdateRate);
GoTo('Begin');
}
//=============================================================================
// Camera Adjustment
//=============================================================================
function SetCameraMode()
{
log("SetCameraMode");
if ( (LocalPlayer == none || LocalPlayer.bDeleteMe || LocalPlayer.Health <= 0) ||
( LocalPlayer.ActiveCamera == none && LocalPlayer.bHasActiveCamera == false )
|| ActiveCamera == none)
return;
//============================================================================================
if ( bCheckCamVector1 )
{
switch Vect1CamMode
{
case CM_None:
break;
case CM_Track1:
NewCameraMode = CM_Track1;
break;
case CM_Track2:
NewCameraMode = CM_Track2;
break;
case CM_CustomCamDistance1:
NewCameraMode = CM_CustomCamDistance1;
break;
case CM_CustomCamDistance2:
NewCameraMode = CM_CustomCamDistance2;
break;
default:
break;
}
}
//======================
if ( bCheckCamVector2 )
{
switch Vect2CamMode
{
case CM_None:
break;
case CM_Track1:
NewCameraMode = CM_Track1;
break;
case CM_Track2:
NewCameraMode = CM_Track2;
break;
case CM_CustomCamDistance1:
NewCameraMode = CM_CustomCamDistance1;
break;
case CM_CustomCamDistance2:
NewCameraMode = CM_CustomCamDistance2;
break;
default:
break;
}
}
//======================
if ( bCheckCamVector3 )
{
switch Vect3CamMode
{
case CM_None:
break;
case CM_Track1:
NewCameraMode = CM_Track1;
break;
case CM_Track2:
NewCameraMode = CM_Track2;
break;
case CM_CustomCamDistance1:
NewCameraMode = CM_CustomCamDistance1;
break;
case CM_CustomCamDistance2:
NewCameraMode = CM_CustomCamDistance2;
break;
default:
break;
}
}
//======================
if ( bCheckCamVector4 )
{
switch Vect4CamMode
{
case CM_None:
break;
case CM_Track1:
NewCameraMode = CM_Track1;
break;
case CM_Track2:
NewCameraMode = CM_Track2;
break;
case CM_CustomCamDistance1:
NewCameraMode = CM_CustomCamDistance1;
break;
case CM_CustomCamDistance2:
NewCameraMode = CM_CustomCamDistance2;
break;
default:
break;
}
}
//======================
switch NewCameraMode
{
case CM_Track1:
ActiveCamera.CamCueue = CM_Track1;
break;
case CM_Track2:
ActiveCamera.CamCueue = CM_Track2;
break;
case CM_CustomCamDistance1:
ActiveCamera.CamCueue = CM_CustomCamDistance1;
break;
case CM_CustomCamDistance2:
ActiveCamera.CamCueue = CM_CustomCamDistance2;
break;
case CM_MoveTransition:
ActiveCamera.CamCueue = CM_MoveTransition;
default:
break;
}
//============================================================================================
if ( LocalPlayer.CurCamID != SharedCameraID )
{
log("SetCameraMode1");
ActiveCamera.TargetDistance = TrackCustomDistance; //Linear distance interpolation
ActiveCamera.DesiredRotation = NewRotation; //Linear rotation interpolation (layer 1) towards this orientation
ActiveCamera.bCamXAxisLock = bCamXAxisLock;
ActiveCamera.bCamYAxisLock = bCamYAxisLock;
ActiveCamera.bCamZAxisLock = bCamZAxisLock;
ActiveCamera.bRestorePitch = bRestorePitch;
ActiveCamera.bRestoreYaw = bRestoreYaw;
ActiveCamera.bRestoreRoll = bRestoreRoll;
if ( bInstantLocTransition )
{
log("SetCameraMode2");
if ( ActiveCamera.CameraMode == CM_MoveTransition )
ActiveCamera.CamCueueAdjust();
ActiveCamera.SetLocation( NewCamLoc);
ActiveCamera.SetRotation( ActiveCamera.DesiredRotation);
ActiveCamera.ViewRotation = ActiveCamera.DesiredRotation;
ActiveCamera.CamDistance = TrackCustomDistance;
ActiveCamera.CamCueueAdjust();
ActiveCamera.Tick(0.0); //Force immediate camera update
}
if ( !bInstantLocTransition )
{
log("SetCameraMode3");
if ( ActiveCamera.CameraMode != CM_MoveTransition )
ActiveCamera.CameraMode = CM_MoveTransition;
if ( ActiveCamera.bTransitionMoving == false )
{
ActiveCamera.NewLoc = NewCamLoc;
ActiveCamera.SetRotation( ActiveCamera.DesiredRotation);
ActiveCamera.ViewRotation = ActiveCamera.DesiredRotation;
ActiveCamera.CamDistance = TrackCustomDistance;
}
}
LocalPlayer.OldCamID = LocalPlayer.CurCamID;
LocalPlayer.CurCamID = SharedCameraID;
}
}
defaultproperties
{
bHidden=true
bEdShouldSnap=True
DrawType=DT_Sprite
Texture=Texture'Engine.S_SpecialEvent'
Style=STY_Masked
}