GlobalLiquidity

Untitled

Mar 19th, 2019
276
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. import * as bjs from 'babylonjs';
  2.  
  3. import {
  4.     Scene
  5. } from '../../scene'
  6.  
  7. import {
  8.     generateWaterMaterial
  9. } from '../../utils'
  10. import { WaterFloor } from '../../elements/waterfloor';
  11. import { ExchangeOrder } from '../../../market/orderupdate';
  12. import { Queue } from 'queue-typescript';
  13. import { SceneElement } from '../../sceneelement';
  14. import { runInThisContext } from 'vm';
  15.  
  16. export class ExchangeOrderSceneElement extends SceneElement
  17. {
  18.     constructor(public name:string, public x: number, public y: number, public z: number, scene:Scene, public order: ExchangeOrder )
  19.     {
  20.         super(name,x,y,z,scene);
  21.     }
  22. }
  23.  
  24. export class SimpleOrderBlock extends ExchangeOrderSceneElement
  25. {
  26.     block:bjs.Mesh;
  27.     blockTexture:bjs.DynamicTexture;
  28.     blockMaterial:bjs.StandardMaterial;
  29.  
  30.    
  31.     constructor(name:string, public x: number, public y: number, public z: number, scene:Scene, public order: ExchangeOrder)
  32.     {
  33.         super(name, x, y, z, scene, order);
  34.         this.create();
  35.     }
  36.    
  37.     protected create()
  38.     {
  39.         console.log("Creating SimpleOrder BlocK");
  40.         this.block = bjs.MeshBuilder.CreateBox("box", {height: 100.0, width: 100.0, depth: 100.0}, this.scene.bjsScene);
  41.         this.block.parent = this;
  42.         this.blockTexture = new bjs.DynamicTexture(name, {width:256, height:128}, this.scene.bjsScene, true);
  43.         this.blockTexture.hasAlpha = true;
  44.         this.blockMaterial = new bjs.StandardMaterial("SpreadLabel", this.scene.bjsScene);                    
  45.         this.blockMaterial.diffuseTexture = this.blockTexture;
  46.         this.block.material = this.blockMaterial;  
  47.     }
  48.  
  49.     protected onRender()
  50.     {
  51.         console.log("Order block render");
  52.     }
  53. }
  54.  
  55. export class ExchangeOrderVisualizer extends SceneElement
  56. {
  57.    ExchangeOrders : Map<number,ExchangeOrderSceneElement> = new Map<number, ExchangeOrderSceneElement>();
  58.  
  59.    processOrderUpdate(order : ExchangeOrder)
  60.    {
  61.        if (! this.ExchangeOrders.has(order.id))
  62.        {
  63.            console.log("Creating Order Element");
  64.            //first time we've gotten an update
  65.            //create the Exchange Order Scene Element
  66.            let orderElement:ExchangeOrderSceneElement = this.createOrderElement(order);
  67.            this.ExchangeOrders[order.id] = orderElement;
  68.            this.addChild(orderElement);
  69.        }
  70.        
  71.    }
  72.  
  73.    protected createOrderElement(order : ExchangeOrder) : ExchangeOrderSceneElement
  74.    {
  75.         return null;
  76.    }
  77. }
  78.  
  79. export class SimpleBlockOrderVisualizer extends ExchangeOrderVisualizer
  80. {
  81.     protected createOrderElement(order : ExchangeOrder)
  82.     {
  83.         console.log("Factory : SimpleOrder BlocK");
  84.         return new SimpleOrderBlock("order",0,0,0,this.scene, order);
  85.     }
  86.  
  87. }
  88.  
  89. export class TradingRigManagerScene extends Scene
  90. {
  91.     water : WaterFloor;
  92.     orderUpdateQueue : Queue<ExchangeOrder> = new Queue<ExchangeOrder>();
  93.  
  94.     orderVisualizer : ExchangeOrderVisualizer;
  95.  
  96.     protected async createScene()
  97.     {
  98.           //Water Floor
  99.         this.water = new WaterFloor("water",0,0,0,this);
  100.         this.AddSceneElement(this.water);
  101.  
  102.         this.orderVisualizer = new SimpleBlockOrderVisualizer("order visualizer",0,0,0,this);
  103.         this.AddSceneElement(this.orderVisualizer);
  104.     }
  105.  
  106.     protected onPreRender()
  107.     {
  108.        
  109.         while(this.orderUpdateQueue.length > 0)
  110.         {
  111.             console.log('Popping Order off the queue...');
  112.             let orderUpdate:ExchangeOrder = this.orderUpdateQueue.dequeue();
  113.             this.orderVisualizer.processOrderUpdate(orderUpdate);
  114.         }
  115.     }
  116. }
Advertisement
Add Comment
Please, Sign In to add comment