# A-Frame & VWF simple scene
# Copyright 2017 Krestianstvo.org project
---
extends: http://vwf.example.com/aframe/ascene.vwf
properties:
  transparent: true
  assets: "assets.json"
children:
  assetBG:
    extends: http://vwf.example.com/aframe/a-asset-image-item.vwf
    properties:
      itemID: "bg"
      itemSrc: "/defaults/assets/bg.jpg"
  assetSky:
    extends: http://vwf.example.com/aframe/a-asset-image-item.vwf
    properties:
      itemID: "sky"
      itemSrc: "/defaults/assets/skyes/sky3.jpg"
  assetBG2:
    extends: http://vwf.example.com/aframe/a-asset-image-item.vwf
    properties:
      itemID: "bg2"
      itemSrc: "/defaults/assets/checker.jpg"
  assetPlaneObj:
    extends: http://vwf.example.com/aframe/a-asset-item.vwf
    properties:
      itemID: "plane-obj"
      itemSrc: "/defaults/assets/models/plane/PUSHILIN_Plane.obj"
  assetPlaneMtl:
    extends: http://vwf.example.com/aframe/a-asset-item.vwf
    properties:
      itemID: "plane-mtl"
      itemSrc: "/defaults/assets/models/plane/PUSHILIN_Plane.mtl"
  myLight:
    extends: http://vwf.example.com/aframe/alight.vwf
    properties:
      type: "directional"
      intensity: 0.5
      position: "0.5 2.0 1.0"
      castShadow: true
  myLight2:
    extends: http://vwf.example.com/aframe/alight.vwf
    properties:
      type: "ambient"
      intensity: 0.5
  model:
    extends: http://vwf.example.com/aframe/aobjmodel.vwf
    properties:
      src: "#plane-obj"
      mtl: "#plane-mtl"
      position: "-1.2 1.7 -2.5"
      rotation: "0 -45 0"
      scale: [0.5, 0.5, 0.5]
    children:
      shadow:
        extends: http://vwf.example.com/aframe/shadowComponent.vwf
        properties:
          cast: true
  spaceText:
    extends: http://vwf.example.com/aframe/atext.vwf
    properties:
      value: "Virtual World Framework & A-Frame"
      color: "#ddd"
      position: "-2 2.5 -2"
  spaceText2:
    extends: http://vwf.example.com/aframe/atext.vwf
    properties:
      value: "Project by Krestianstvo.org"
      color: "#aaa"
      position: "1 3 -4"
  boxAnim:
    extends: http://vwf.example.com/aframe/abox.vwf
    properties:
      position: "0 0 -3"
      rotation: "0 0 0"
      depth: 2
      height: 1
      width: 1
      class: "hit"
    methods:
      hitstartEventMethod:
        body: |
          this.material.opacity = 0.7
      hitendEventMethod:
        body: |
          this.material.opacity = 1.0
    children:
      aabb-collider-listener:
        extends: http://vwf.example.com/aframe/app-aabb-collider-listener-component.vwf
        type: "component"
      material:
        extends: http://vwf.example.com/aframe/aMaterialComponent.vwf
        properties:
          color: "#3c7249"
  box:
    extends: http://vwf.example.com/aframe/abox.vwf
    properties:
      position: "-1 0.5 -3"
      rotation: "0 -30 0"
      depth: 2
      height: 1
      width: 1
      class: "clickable intersectable"
    children:
      material:
        extends: http://vwf.example.com/aframe/aMaterialComponent.vwf
        properties:
          color: "#3c7249"
          transparent: true
      raycaster-listener:
        extends: http://vwf.example.com/aframe/app-raycaster-listener-component.vwf
        type: "component"
      cursor-listener:
        extends: http://vwf.example.com/aframe/app-cursor-listener-component.vwf
        type: "component"
      shadow:
        extends: http://vwf.example.com/aframe/shadowComponent.vwf
        properties:
          cast: true
          receive: true
    events:
      clickEvent:
    methods:
      clickEventMethod:
        body: |
            let genColor = this.generateColor();
            this.material.color = genColor 
      intersectEventMethod:
        body: |
          this.material.opacity = 0.7
      clearIntersectEventMethod:
        body: |
          this.material.opacity = 1.0
      generateColor:
        body: |
          var letters = '0123456789ABCDEF';
          var color = '#';
          for (var i = 0; i < 6; i++) {
          color += letters[Math.floor(this.random() * 16)];
          } return color 
  sphere:
    extends: http://vwf.example.com/aframe/asphere.vwf
    properties:
      position: "1 1.25 -4"
      radius: 1
    children:
      material:
        extends: http://vwf.example.com/aframe/aMaterialComponent.vwf
        properties:
          color: "#e0e014"
          wireframe: true
      box2:
        extends: http://vwf.example.com/aframe/abox.vwf
        properties:
          position: "2 -0.75 0"
          depth: 1
        children:
          raycaster:
            extends: http://vwf.example.com/aframe/raycasterComponent.vwf
            type: "component"
            properties:
              recursive: false
              interval: 10
              far: 2
              objects: ".intersectable"  
          material:
            extends: http://vwf.example.com/aframe/aMaterialComponent.vwf
            properties:
              color: "#2167a5"
              src: "#bg"
          shadow:
            extends: http://vwf.example.com/aframe/shadowComponent.vwf
            properties:
              cast: true
          interpolation:
            extends: http://vwf.example.com/aframe/interpolation-component.vwf
            properties:
              enabled: true
              deltaPos: 0.001
              deltaRot: 0.1
        methods:
          run:
            body: |
              var time = vwf.now;
              let pos = this.position; //AFRAME.utils.coordinates.parse(this.position);
              this.position = [pos[0], pos[1], Math.sin(time)]
              this.future( 0.01 ).run();
  sky:
    extends: http://vwf.example.com/aframe/asky.vwf
    properties:
    children:
      material:
        extends: http://vwf.example.com/aframe/aMaterialComponent.vwf
        properties:
          src: "#sky"
          side: "back"
          fog: false
  groundPlane:
    extends: http://vwf.example.com/aframe/aplane.vwf
    properties:
      height: 50
      width: 50
      rotation: "-90 0 0"
    children:
      material:
        extends: http://vwf.example.com/aframe/aMaterialComponent.vwf
        properties:
          repeat: "10 10"
          color: "white"
          src: "#bg2"
      shadow:
        extends: http://vwf.example.com/aframe/shadowComponent.vwf
        properties:
          receive: true
methods:
  initialize:
    body: |
      var runBox = vwf_view.kernel.find("", "/sphere/box2")[0];
      console.log(runBox);
      vwf_view.kernel.callMethod(runBox, "run");