Advertisement
Guest User

character.js

a guest
May 27th, 2019
110
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. import Weapon from "./weapon"
  2.  
  3. export default class Character{
  4.     constructor(game){
  5.         this.game = game;
  6.         this.scene = game.scene
  7.         this.camera = game.camera
  8.        
  9.         this.health = 0
  10.         this.energy = 0
  11.         this.ammunition = 0      
  12.     }
  13.  
  14.    
  15.     characterController () {      
  16.        
  17.         // Create our own manager:
  18.         var FreeCameraKeyboardRotateInput = function () {
  19.             this._keys = []
  20.             this.keysLeft = [65]// A
  21.             this.keysRight = [68]// D
  22.             this.keysForward = [87] // W
  23.             this.keysBackward = [83] // S      
  24.         }
  25.    
  26.         // Hooking keyboard events
  27.         FreeCameraKeyboardRotateInput.prototype.attachControl = function (element, noPreventDefault) {
  28.             var _this = this
  29.             if (!this._onKeyDown) {
  30.                 element.tabIndex = 1
  31.                 this._onKeyDown = function (evt) {
  32.                     if (_this.keysLeft.indexOf(evt.keyCode) !== -1 ||
  33.                         _this.keysRight.indexOf(evt.keyCode) !== -1 ||
  34.                         _this.keysForward.indexOf(evt.keyCode) !== -1 ||
  35.                         _this.keysBackward.indexOf(evt.keyCode) !== -1 ){
  36.                         var index = _this._keys.indexOf(evt.keyCode)
  37.                         if (index === -1) {
  38.                             _this._keys.push(evt.keyCode)
  39.                         }
  40.                         if (!noPreventDefault) {
  41.                             evt.preventDefault()
  42.                         }
  43.                     }
  44.                 }
  45.                 this._onKeyUp = function (evt) {
  46.                     if (_this.keysLeft.indexOf(evt.keyCode) !== -1 ||
  47.                         _this.keysRight.indexOf(evt.keyCode) !== -1 ||
  48.                          _this.keysForward.indexOf(evt.keyCode) !== -1 ||
  49.                          _this.keysBackward.indexOf(evt.keyCode) !== -1) {
  50.                         var index = _this._keys.indexOf(evt.keyCode)
  51.                         if (index >= 0) {
  52.                             _this._keys.splice(index, 1)
  53.                         }
  54.                         if (!noPreventDefault) {
  55.                             evt.preventDefault()
  56.                         }
  57.                     }
  58.                 }
  59.    
  60.                 element.addEventListener("keydown", this._onKeyDown, false)
  61.                 element.addEventListener("keyup", this._onKeyUp, false)
  62.                 BABYLON.Tools.RegisterTopRootEvents([
  63.                     { name: "blur", handler: this._onLostFocus }
  64.                 ])
  65.             }
  66.         }
  67.    
  68.         // Unhook
  69.         FreeCameraKeyboardRotateInput.prototype.detachControl = function (element) {
  70.             if (this._onKeyDown) {
  71.                 element.removeEventListener("keydown", this._onKeyDown)
  72.                 element.removeEventListener("keyup", this._onKeyUp)
  73.                 BABYLON.Tools.UnregisterTopRootEvents([
  74.                     { name: "blur", handler: this._onLostFocus }
  75.                 ])
  76.                 this._keys = []
  77.                 this._onKeyDown = null
  78.                 this._onKeyUp = null
  79.             }
  80.         }
  81.    
  82.         // This function is called by the system on every frame
  83.         FreeCameraKeyboardRotateInput.prototype.checkInputs = function () {
  84.            
  85.             if (this._onKeyDown) {
  86.                 // Keyboard
  87.                 for (var index = 0; index < this._keys.length; index++) {
  88.                     var keyCode = this._keys[index]
  89.                     var speed = this.camera._computeLocalCameraSpeed()                
  90.                     if (this.keysLeft.indexOf(keyCode) !== -1) {                    
  91.                         this.camera._localDirection.copyFromFloats(-speed, 0, 0)
  92.                     }
  93.                     else if (this.keysRight.indexOf(keyCode) !== -1) {
  94.                         this.camera._localDirection.copyFromFloats(+speed, 0, 0)
  95.                     }
  96.                     else if (this.keysBackward.indexOf(keyCode) !== -1){
  97.                         this.camera._localDirection.copyFromFloats(0, 0, -speed)
  98.                     }
  99.                     else if (this.keysForward.indexOf(keyCode) !== -1){
  100.                         this.camera._localDirection.copyFromFloats(0, 0, +speed)
  101.                     }
  102.                
  103.                     if (this.camera.getScene().useRightHandedSystem) {
  104.                         this.camera._localDirection.z *= -1
  105.                     }
  106.    
  107.                     this.camera.getViewMatrix().invertToRef(this.camera._cameraTransformMatrix)
  108.                     BABYLON.Vector3.TransformNormalToRef(this.camera._localDirection, this.camera._cameraTransformMatrix, this.camera._transformedDirection)
  109.                     this.camera.cameraDirection.addInPlace(this.camera._transformedDirection)                
  110.                 }            
  111.             }        
  112.         }  
  113.    
  114.         FreeCameraKeyboardRotateInput.prototype.getTypeName = function () {
  115.             return "FreeCameraKeyboardRotateInput"
  116.         }
  117.         FreeCameraKeyboardRotateInput.prototype._onLostFocus = function (e) {
  118.             this._keys = []
  119.         }
  120.         FreeCameraKeyboardRotateInput.prototype.getSimpleName = function () {
  121.             return "keyboardRotate"
  122.         }
  123.    
  124.         // Connect to camera:
  125.         this.camera.inputs.add(new FreeCameraKeyboardRotateInput());  
  126.     }
  127. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement