public virtual void teleportPlayer(GameBase gplayer, SceneObject exit)
        {
            Player     player = gplayer._ID;
            TransformF targetPosition;

            if (exit["reorientPlayer"].AsBool())
            {
                targetPosition = exit.getTransform();
            }
            else
            {
                targetPosition = exit.getTransform();
                TransformF playerrot = player.getTransform();
                targetPosition.mOrientationX = playerrot.mOrientationX;
                targetPosition.mOrientationY = playerrot.mOrientationY;
                targetPosition.mOrientationZ = playerrot.mOrientationZ;
                targetPosition.MAngle        = playerrot.MAngle;
            }
            player.setTransform(targetPosition);
            Point3F playervelocity = player.getVelocity();

            playervelocity = playervelocity.vectorScale(exit["exitVelocityScale"].AsFloat());
            player.setVelocity(playervelocity);
            // Prevent the object from doing an immediate second teleport
            // In the case of a bidirectional teleporter
            player["isTeleporting"] = true.AsString();
        }
예제 #2
0
        public virtual void resetTransforms()
        {
            addUndoState();

            for (int i = 0; i < getSelectionSize(); i++)
            {
                SceneObject obj       = getSelectedObject(i);
                TransformF  transform = obj.getTransform();
                transform.mOrientationX = 0;
                transform.mOrientationY = 0;
                transform.mOrientationZ = 0;
                transform.MAngle        = 0;

                obj.setTransform(transform);
                obj.setScale(new Point3F(1, 1, 1));
            }
        }
 public virtual void teleportPlayer(GameBase gplayer, SceneObject exit)
 {
     Player player = gplayer._ID;
     TransformF targetPosition;
     if (exit["reorientPlayer"].AsBool())
         targetPosition = exit.getTransform();
     else
         {
         targetPosition = exit.getTransform();
         TransformF playerrot = player.getTransform();
         targetPosition.mOrientationX = playerrot.mOrientationX;
         targetPosition.mOrientationY = playerrot.mOrientationY;
         targetPosition.mOrientationZ = playerrot.mOrientationZ;
         targetPosition.MAngle = playerrot.MAngle;
         }
     player.setTransform(targetPosition);
     Point3F playervelocity = player.getVelocity();
     playervelocity = playervelocity.vectorScale(exit["exitVelocityScale"].AsFloat());
     player.setVelocity(playervelocity);
     // Prevent the object from doing an immediate second teleport
     // In the case of a bidirectional teleporter
     player["isTeleporting"] = true.AsString();
 }
예제 #4
0
 public override void setMode(Extendable.Camera camera, string mode, SceneObject arg1, string arg2, string arg3)
 {
     switch (mode)
         {
             case "Observer":
                 camera.setFlyMode();
                 break;
             case "Corpse":
                 camera.setOrbitMode(arg1, arg1.getTransform(), (float) 0.5, (float) 4.5, (float) 4.5, false, new Point3F(), false);
                 camera["orbitObj"] = arg1;
                 break;
         }
     camera["mode"] = mode;
 }