Browse Source

add ModelPrimitive

tags/2.2.1
Caven Chen 4 years ago
parent
commit
d19381d24b
1 changed files with 83 additions and 0 deletions
  1. 83
    0
      modules/overlay/primitive/ModelPrimitive.js

+ 83
- 0
modules/overlay/primitive/ModelPrimitive.js View File

@@ -0,0 +1,83 @@
/**
* @Author: Caven
* @Date: 2021-05-14 00:33:27
*/

import { Cesium } from '@dc-modules/namespace'
import State from '@dc-modules/state/State'
import Parse from '@dc-modules/parse/Parse'
import { Util } from '@dc-modules/utils'
import { Transform } from '@dc-modules/transform'
import Overlay from '../Overlay'

class ModelPrimitive extends Overlay {
constructor(position, modelUrl) {
super()
this._position = Parse.parsePosition(position)
this._modelUrl = modelUrl
this._delegate = Cesium.Model.fromGltf({ url: modelUrl })
this.type = Overlay.getOverlayType('model_primitive')
this._state = State.INITIALIZED
}

set position(position) {
this._position = Parse.parsePosition(position)
let origin = Transform.transformWGS84ToCartesian(this._position)
let modelMatrix = Cesium.Transforms.eastNorthUpToFixedFrame(origin)
let hprMatrix = Cesium.Transforms.headingPitchRollToFixedFrame(
origin,
new Cesium.HeadingPitchRoll(
Cesium.Math.toRadians(this._position.heading),
Cesium.Math.toRadians(this._position.pitch),
Cesium.Math.toRadians(this._position.roll)
)
)
Cesium.Matrix4.multiply(modelMatrix, hprMatrix, modelMatrix)
this._delegate.modelMatrix = modelMatrix
return this
}

get position() {
return this._position
}

set modelUrl(modelUrl) {
this._modelUrl = modelUrl
this._delegate = Cesium.Model.fromGltf({ url: modelUrl })
this.position = this._position
return this
}

get modelUrl() {
return this._modelUrl
}

/**
*
* @private
*/
_mountedHook() {
/**
* set the location
*/
this.position = this._position
}

/**
* Sets style
* @param style
* @returns {ModelPrimitive}
*/
setStyle(style) {
if (!style || Object.keys(style).length === 0) {
return this
}
this._style = style
Util.merge(this._delegate, this._style)
return this
}
}

Overlay.registerType('model_primitive')

export default ModelPrimitive

Loading…
Cancel
Save