Įƒ*žE5@&i-IŽ¤ŗÆE¶kÅJ¬”ź5NoneActorAttacherbMoveYbMoveZ bRotateYaw bRotatePitchCoreEnginePostBeginPlay bNoDelete bAlwaysTickSystem bRotateRollbMoveXTickbStatic RemoteRolebNetTemporaryPackageMover Keypoint TextBufferClassObjectActorStructPropertyVectorStructRollPitchYZXA FunctionRotatorR Location DeltaTimeObjectPropertyKeyRot Rotation IntProperty ActorName MoverNameiFloatProperty BoolPropertyYawV ScriptText AttachRot AttachVecƒ ‡…†…†    ™7ŽĻ%Ķ–,Ć‚w* w*a= ˆ%`š—- 6Œ6Œ× ‰a»6Œ6Œ ‰ś-66× ‰a66 ‰]- 6Ž6Ž× ‰a6Ž6Ž ‰a Š- 66a< ˆō66 ˆ,- 6‘6‘a< ˆP6‘6‘ ˆˆ- 6‹6‹a< ˆ¬6‹6‹ ˆa+„ •’’’’’’’’’’’’’’’’’’ xźk•hžDƒœŌX‡yrŅƃœŌX‡yrŅƇyrŅƇyrŅƇyrŅƃœŌX‡yrŅƃœŌX‡yrŅƃœŌXƒœŌX‡yrŅƃœŌX‡yrŅƃœŌX‡yrŅƃœŌXƒœŌX„ ÓÓÓ ÓÓÓS Ó ÓÓ€ƒ–X  —–%•–,‹w*a= ˆ ˆŲ ‰ ‰„  K=// ============================================================================= // ActorAttacher // ============================================================================= // (c) 2001 by ElBundee // ============================================================================= // You may be right - I may be crazy // ============================================================================= class ActorAttacher extends Keypoint; // I never figured out how the AttachMover is supposed to work - so I // made this actor. Allows attachment of a MAXIMUM AMOUNT of 8 actors to a // specified mover, so that they will move as the mover moves, keeping their // relative position to the mover. Of course you can use more than one // ActorAttacher to attach more than 8 actors. // // The relative positions are determined by the positions of the actors // during the first keyframe (0) of the mover. Note that bNoDelete of // Pickups has to be TRUE. // ============================================================================= // Properties // ============================================================================= var() Actor ActorName[8]; // Names of Actors to be attached var() Mover MoverName; // Name of Mover to attached to var() bool bRotateRoll; // Is the actor supposed to nick? var() bool bRotatePitch; // Is the actor supposed to pitch? var() bool bRotateYaw; // Is the actor supposed to yaw? var() bool bMoveX; var() bool bMoveY; var() bool bMoveZ; // ============================================================================= // Variables // ============================================================================= var Rotator AttachRot[8]; // Remember the relative rotation var Vector AttachVec[8]; // Remember the relative location // ============================================================================= // Tick // ============================================================================= simulated function Tick(float DeltaTime) { local int i; local rotator R; local vector V; local Actor A; for(i=0; i<8; i++) { if(ActorName[i] != None && MoverName != None) { R = MoverName.Rotation - MoverName.KeyRot[0]; if(bMoveX) V.X = (MoverName.Location + (AttachVec[i] >> R)).X; else V.X = ActorName[i].Location.X; if(bMoveY) V.Y = (MoverName.Location + (AttachVec[i] >> R)).Y; else V.Y = ActorName[i].Location.Y; if(bMoveZ) V.Z = (MoverName.Location + (AttachVec[i] >> R)).Z; else V.Z = ActorName[i].Location.Z; ActorName[i].SetLocation(V); if(bRotateYaw) R.Yaw = (MoverName.Rotation + AttachRot[i]).Yaw; else R.Yaw = ActorName[i].Rotation.Yaw; if(bRotateRoll) R.Roll = (MoverName.Rotation + AttachRot[i]).Roll; else R.Roll = ActorName[i].Rotation.Roll; if(bRotatePitch) R.Pitch = (MoverName.Rotation + AttachRot[i]).Pitch; else R.Pitch = ActorName[i].Rotation.Pitch; ActorName[i].SetRotation(R); } } } // ============================================================================= // PostBeginPlay // ============================================================================= simulated function PostBeginPlay() { local int i; Super.PostBeginPlay(); for(i=0; i<8; i++) { if(ActorName[i] != None) { AttachRot[i] = ActorName[i].Rotation - MoverName.Rotation; AttachVec[i] = ActorName[i].Location - MoverName.Location; } } } // ============================================================================= // defaultproperties // ============================================================================= ž’’’’’’’ü’’’#ü’’’ž’’’ż’’’)ż’’’%’’’’/*ū’’’.ś’’’ ’’’’.ś’’’.ś’’’*ū’’’0*ū’’’’’’’'’’’’*’’’’"ž’’’"ż’’’’’’’.’’’’"ż’’’ł’’’(’’’’“- ~ ’+ J ’, W $ d “- q 1 } 3 J 4 W Š d Š p Š  | Š HŠ  TŠ `”™pl•j\—& F’! R”–t_˜24V=S