Interrupting Matinee by User

  • Two Factor Authentication is now available on BeyondUnreal Forums. To configure it, visit your Profile and look for the "Two Step Verification" option on the left side. We can send codes via email (may be slower) or you can set up any TOTP Authenticator app on your phone (Authy, Google Authenticator, etc) to deliver codes. It is highly recommended that you configure this to keep your account safe.

Vito

New Member
Mar 18, 2002
143
0
0
You can't by default. You'll have to check out the UT2004 matinee UnrealScript code for that. If it's not done natively, you might be able to write some UnrealScript that supports it. If it is, I can give you other suggestions.
 

ttl

New Member
Oct 22, 2003
51
0
0
If you don’t want to play the same scene again, wouldn’t you just destroy the scene manager?
 

HeadShooter

New Member
Mar 30, 2004
12
0
0
44
Moscow, Russia
Vito said:
You can't by default. You'll have to check out the UT2004 matinee UnrealScript code for that. If it's not done natively, you might be able to write some UnrealScript that supports it. If it is, I can give you other suggestions.

Thanks!! Can you help me a little bit more?
Where can i find this? Scene manager code? Interactions code?
 

ttl

New Member
Oct 22, 2003
51
0
0
Instead of finding it, why dont you look through the SceneManager code?

Anywho here is an example, put this in your playercontroller class:
Code:
exec function StartMatinee()
{
  local SceneManager scene;
  //if(isViewingMatinee()) return;
  foreach DynamicActors(class'SceneManager',scene)
  {
    if(scene.bIsSceneStarted || scene.bIsRunning) continue;
    scene.Trigger(self,pawn);
    break;
  }
}
exec function KillMatinee()
{
  local SceneManager scene;
  local MatAction action;
  local MatSubAction subaction;
  local int i,j;
  foreach DynamicActors(class'SceneManager',scene)
  {
    if(!scene.bIsRunning || !scene.bIsSceneStarted) continue;
    scene.bIsRunning=false;
    scene.bIsSceneStarted=false;
    for(i=0;i < scene.Actions.length;i++)
    {
      action = scene.Actions[i];
      if(action != none)
      {
        for(j=0;j < action.SubActions.length;j++)
        {
          subaction=action.SubActions[j];
          if(subaction != none && subaction.status == SASTATUS_Running) 
            subaction.status=SASTATUS_Ending;
        }
      }
    }
    scene.SceneEnded();
    SetViewTarget(pawn);
  }
}

You could of course call it from the Fire() function. I would personally subclass the SceneManager class and place them in the level instead, and perhaps have a state in the player controller class called 'WatchingMatinee' and goto that from the scenemanager, and then when that stateends you call a function (perhaps by overwriting to the fire function) in your scenemanager that either pauses, resets or destroys your scene manager. Back in the playercontroller class I would set the correct viewtarget. And if you needed to change anything at a later date you could, because it wouldn’t be in a built-in class.
 
Last edited: