/** * Copyright 1998-2013 Epic Games, Inc. All Rights Reserved. */ class UDKTeleporterBase extends Teleporter native abstract config(Game); /** the component that captures the portal scene */ var(SceneCapture) editconst SceneCaptureComponent PortalCaptureComponent; /** the texture that the component renders to */ var TextureRenderTarget2D TextureTarget; /** resolution parameters */ var(SceneCapture) int TextureResolutionX, TextureResolutionY; /** actor that the portal view is based on (used for updating Controllers' VisiblePortals array) */ var Actor PortalViewTarget; /** materials for the portal effect */ var MaterialInterface PortalMaterial; var MaterialInstanceConstant PortalMaterialInstance; /** material parameter that we assign the rendered texture to */ var name PortalTextureParameter; /** Sound to be played when someone teleports in*/ var SoundCue TeleportingSound; cpptext { virtual void TickSpecial(FLOAT DeltaTime); } simulated event PostBeginPlay() { local Teleporter Dest; Super.PostBeginPlay(); if (WorldInfo.NetMode != NM_DedicatedServer) { // try to find a teleporter to view foreach WorldInfo.AllNavigationPoints(class'Teleporter', Dest) { if (string(Dest.Tag) ~= URL && Dest != Self) { break; } } if (WorldInfo.IsConsoleBuild(CONSOLE_PS3) || WorldInfo.IsConsoleBuild(CONSOLE_Mobile)) { SetHidden(Dest == None); } else { InitializePortalEffect(Dest); } } } simulated function InitializePortalEffect(Actor Dest) { local bool bStaticCapture; if (PortalCaptureComponent != None) { if (Dest != None) { // only get realtime capture in high detail mode bStaticCapture = (WorldInfo.GetDetailMode() < DM_High); PortalViewTarget = Dest; // set up the portal effect PortalMaterialInstance = new(self) class'MaterialInstanceConstant'; PortalMaterialInstance.SetParent(PortalMaterial); TextureTarget = class'TextureRenderTarget2D'.static.Create( TextureResolutionX, TextureResolutionY,, MakeLinearColor(0.0, 0.0, 0.0, 1.0), bStaticCapture ); if (bStaticCapture) { PortalCaptureComponent.SetFrameRate(0); } PortalMaterialInstance.SetTextureParameterValue(PortalTextureParameter, TextureTarget); AttachComponent(PortalCaptureComponent); } else { SetHidden(true); } } } simulated event bool Accept( actor Incoming, Actor Source ) { if (Super.Accept(Incoming,Source)) { PlaySound(TeleportingSound); return true; } else { return false; } } defaultproperties { Begin Object Name=CollisionCylinder CollisionRadius=50.0 CollisionHeight=30.0 End Object bStatic=false bMovable=false PortalTextureParameter=RenderToTextureMap TextureResolutionX=256 TextureResolutionY=256 }