Recent Posts
Java | 11 sec ago
None | 37 sec ago
Python | 1 min ago
C++ | 2 min ago
None | 2 min ago
None | 2 min ago
None | 2 min ago
None | 2 min ago
ASM (NASM) | 3 min ago
Python | 3 min ago
Free Subdomains
Want a pastebin.com sub-domain for your community?
learn more...
What is pastebin?
Pastebin is a website that hosts all your text & code on dedicated servers for easy sharing.
learn more...
Learn a little bit about the new Pastebin.com on our help page. hide message
By Anonymous on the 9th of Feb 2010 09:45:29 PM Download | Raw | Embed | Report
  1. //! zinc
  2. library Camera {
  3.  
  4.     constant real TIMEOUT = 0.03125;
  5.     constant real ROTATE_SPEED = 50;
  6.    
  7.     constant real ZOOM_SPEED = 750;
  8.     constant real ZOOM_MIN = 1500;
  9.     constant real ZOOM_MAX = 2750;
  10.  
  11.     struct Cam {
  12.    
  13.         method left() {
  14.             AdjustCameraField(CAMERA_FIELD_ROTATION, -(ROTATE_SPEED * TIMEOUT), TIMEOUT);
  15.         }
  16.        
  17.         method right() {
  18.             AdjustCameraField(CAMERA_FIELD_ROTATION, (ROTATE_SPEED * TIMEOUT), TIMEOUT);
  19.         }
  20.        
  21.         method up() {
  22.             if (GetCameraField(CAMERA_FIELD_TARGET_DISTANCE) <= ZOOM_MIN) {
  23.                 SetCameraField(CAMERA_FIELD_TARGET_DISTANCE, ZOOM_MIN, 1.);
  24.             }
  25.             else {
  26.                 AdjustCameraField(CAMERA_FIELD_TARGET_DISTANCE, -(ZOOM_SPEED * TIMEOUT), TIMEOUT);
  27.             }
  28.         }
  29.        
  30.         method down() {
  31.             if (GetCameraField(CAMERA_FIELD_TARGET_DISTANCE) >= ZOOM_MAX) {
  32.                 SetCameraField(CAMERA_FIELD_TARGET_DISTANCE, ZOOM_MAX, 1.);
  33.             }
  34.             else {
  35.                 AdjustCameraField(CAMERA_FIELD_TARGET_DISTANCE, (ZOOM_SPEED * TIMEOUT), TIMEOUT);
  36.             }
  37.         }
  38.    
  39.     }
  40.    
  41.     camerasetup Camera;
  42.    
  43.     function refreshCamera(player whichPlayer) {        
  44.         if (GetLocalPlayer() == whichPlayer) {
  45.             if (whichPlayer == Player(0)) {
  46.                 CameraSetupSetField(Camera, CAMERA_FIELD_ROTATION, 0., 0.);
  47.             }
  48.             else {
  49.                 CameraSetupSetField(Camera, CAMERA_FIELD_ROTATION, 180., 0.);
  50.             }
  51.             CameraSetupApply(Camera, true, true);
  52.         }
  53.        
  54.     }
  55.    
  56.     function initCameras() {
  57.         FogEnable(false);
  58.         FogMaskEnable(false);
  59.        
  60.         EnableOcclusion(false);
  61.         EnableUserControl(true);
  62.         EnableWorldFogBoundary(true);
  63.       //  CameraSetSmoothingFactor(3.0);
  64.        
  65.         Camera = CreateCameraSetup();
  66.         CameraSetupSetDestPosition(Camera, Board.centerX, Board.centerY, 0.);
  67.         CameraSetupSetField(Camera, CAMERA_FIELD_ZOFFSET, 0., 0.);
  68.         CameraSetupSetField(Camera, CAMERA_FIELD_ANGLE_OF_ATTACK, 295., 0.);
  69.         CameraSetupSetField(Camera, CAMERA_FIELD_TARGET_DISTANCE, 2100., 0.);
  70.         CameraSetupSetField(Camera, CAMERA_FIELD_ROLL, 0., 0.);
  71.         CameraSetupSetField(Camera, CAMERA_FIELD_FARZ, 10000., 0.);
  72.         CameraSetupSetField(Camera, CAMERA_FIELD_FIELD_OF_VIEW, 70., 0.);
  73.        
  74.         refreshCamera(Player(0));
  75.         refreshCamera(Player(1));
  76.        
  77.         SetCameraTargetController(CreateUnit(NEUTRAL, DUMMY, Board.centerX, Board.centerY, 0.), 0., 0., false);
  78.        
  79.     }
  80.    
  81.     constant integer UP = 0, DOWN = 1, LEFT = 2, RIGHT = 3;
  82.    
  83.     private /* Key Event Callbacks */ {
  84.        
  85.         timer Tim = CreateTimer();
  86.         integer TotalPressed = 0;
  87.         boolean Pressed[2][4];
  88.        
  89.        
  90.         function Expire() {
  91.             integer a;
  92.             for(a = 0; a < 2; a += 1) {
  93.                 if (GetLocalPlayer() == Player(a)) {
  94.                     if (Pressed[a][UP]) {
  95.                         Cam(a).up();
  96.                     }
  97.                     if (Pressed[a][DOWN]) {
  98.                         Cam(a).down();
  99.                     }
  100.                     if (Pressed[a][LEFT]) {
  101.                         Cam(a).left();
  102.                     }
  103.                     if (Pressed[a][RIGHT]) {
  104.                         Cam(a).right();
  105.                     }
  106.                 }
  107.             }
  108.         }
  109.        
  110.         //! textmacro Camera_KeyPress takes Key, KEY
  111.             function key$Key$Down() -> boolean {
  112.                 TotalPressed += 1;
  113.                 Pressed[GetPlayerId(GetTriggerPlayer())][$KEY$] = true;
  114.                 if (TotalPressed == 1) {
  115.                     TimerStart(Tim, TIMEOUT, true, function Expire);
  116.                 }
  117.                 return false;
  118.             }
  119.            
  120.             function key$Key$Up() -> boolean {
  121.                 TotalPressed -= 1;
  122.                 Pressed[GetPlayerId(GetTriggerPlayer())][$KEY$] = false;
  123.                 if (TotalPressed == 0) {
  124.                     PauseTimer(Tim);
  125.                 }
  126.                 return false;
  127.             }
  128.         //! endtextmacro
  129.        
  130.         //! runtextmacro Camera_KeyPress("Up", "UP");
  131.         //! runtextmacro Camera_KeyPress("Down", "DOWN");
  132.         //! runtextmacro Camera_KeyPress("Left", "LEFT");
  133.         //! runtextmacro Camera_KeyPress("Right", "RIGHT");
  134.  
  135.    
  136.         function createTriggers() {
  137.             trigger t;
  138.            
  139.             //! textmacro Camera_Events takes Key, KEY
  140.                 t = CreateTrigger();
  141.                 TriggerRegisterPlayerEvent(t, Player(0), EVENT_PLAYER_ARROW_$KEY$_DOWN);
  142.                 TriggerRegisterPlayerEvent(t, Player(1), EVENT_PLAYER_ARROW_$KEY$_DOWN);
  143.                 TriggerAddCondition(t, Filter(function key$Key$Down));
  144.                 t = CreateTrigger();
  145.                 TriggerRegisterPlayerEvent(t, Player(0), EVENT_PLAYER_ARROW_$KEY$_UP);
  146.                 TriggerRegisterPlayerEvent(t, Player(1), EVENT_PLAYER_ARROW_$KEY$_UP);
  147.                 TriggerAddCondition(t, Filter(function key$Key$Up));
  148.             //! endtextmacro
  149.            
  150.             //! runtextmacro Camera_Events("Up", "UP");
  151.             //! runtextmacro Camera_Events("Down", "DOWN");
  152.             //! runtextmacro Camera_Events("Left", "LEFT");
  153.             //! runtextmacro Camera_Events("Right", "RIGHT");
  154.            
  155.         }
  156.    
  157.     }
  158.    
  159.     function onInit() {
  160.         initCameras();
  161.         createTriggers();
  162.     }
  163.  
  164. }
  165. //! endzinc
Submit a correction or amendment below. Make A New Post
To highlight particular lines, prefix each line with @h@
Syntax highlighting:
Post expiration:
Post exposure:
Name / Title:
Email: