Source: Dot3D.js

/*
 * @Description: In User Settings Edit
 * @author: lidafeng 
 * @Date: 2019-09-19 15:48:58
 * @LastEditTime: 2019-09-20 10:14:15
 * @LastEditors: mayuanye
 */
import { NativeModules } from 'react-native';
let D3D = NativeModules.JSDot3D;

/**
 * @class Dot3D
 * @description 实现对三维坐标点的类型定义
 */
export default class Dot3D {
  /**
   * 构造一个新的Dot3D对象。有两种构造方法:
   * (1)无参构造
   * (2)通过createObj(x,y,z)构造,x,y,z均为double范围的Number
   * @memberof Dot3D
   * @returns {Promise<Dot3D>}
   */
  async createObj() {
    try {
      if (
        typeof arguments[0] === 'number' &&
        typeof arguments[1] === 'number' &&
        typeof arguments[2] === 'number'
      ) {
        let { Dot3DId } = await D3D.createObjByXYZ(
          arguments[0],
          arguments[1],
          arguments[2]
        );
        let dot3D = new Dot3D();
        dot3D._MGDot3DId = Dot3DId;
        return dot3D;
      } else {
        let { Dot3DId } = await D3D.createObj();
        let dot3D = new Dot3D();
        dot3D._MGDot3DId = Dot3DId;
        return dot3D;
      }
    } catch (e) {
      console.error(e);
    }
  }

  /**
   * 返回X值
   *
   * @memberof Dot3D
   * @returns {Number} X值(double范围的Number)
   */
  async getX() {
    try {
      let x = await D3D.getX(this._MGDot3DId);
      return x;
    } catch (e) {
      console.error(e);
    }
  }

  /**
   * 返回y值
   *
   * @memberof Dot3D
   * @returns {Number} y值(double范围的Number)
   */
  async getY() {
    try {
      let y = await D3D.getY(this._MGDot3DId);
      return y;
    } catch (e) {
      console.error(e);
    }
  }

  /**
   * 返回z值
   *
   * @memberof Dot3D
   * @returns {Number} z值(double范围的Number)
   */
  async getZ() {
    try {
      let z = await D3D.getZ(this._MGDot3DId);
      return z;
    } catch (e) {
      console.error(e);
    }
  }

  /**
   * 设置X值
   *
   * @memberof Dot3D
   * @param {Number} x x坐标 (double范围的Number)
   * @returns {Promise<Void>}
   */
  async setX(x) {
    try {
      await D3D.setX(this._MGDot3DId, x);
    } catch (e) {
      console.error(e);
    }
  }

  /**
   * 设置y值
   *
   * @memberof Dot3D
   * @param {Number} y x坐标 (double范围的Number)
   * @returns {Promise<Void>}
   */
  async setY(y) {
    try {
      await D3D.setY(this._MGDot3DId, y);
    } catch (e) {
      console.error(e);
    }
  }

  /**
   * 设置z值
   *
   * @memberof Dot3D
   * @param {Number} z z坐标 (double范围的Number)
   * @returns {Promise<Void>}
   */
  async setZ(z) {
    try {
      await D3D.setZ(this._MGDot3DId, z);
    } catch (e) {
      console.error(e);
    }
  }
}