浏览代码

feat poc2.0去掉数据库str字段

lihao1 3 年之前
父节点
当前提交
a668332c3c

+ 1 - 1
cadengine/src/main/java/cn/sagacloud/android/cadengine/FloorScene.kt

@@ -307,7 +307,7 @@ open class FloorScene : SGraphyScene() {
     open fun addWall(wall: Wall) {
         val item = WallItem(wall)
         item.isVisible = isShowWall
-        item.zOrder = 100000f
+        item.zOrder = 1000000f
         wallList.add(item)
         addItem(item)
     } // Function addWall()

+ 1 - 1
demo/src/main/java/com/framework/app/Constants.kt

@@ -10,7 +10,7 @@ const val test2IP = "http://192.168.0.11:8876/"
 
 const val tencentIP = "http://82.157.28.170:8876/"
 
-const val IP = test2IP
+const val IP = tencentIP
 
 const val pathDownloadMap = "adm/downloadMap?key="
 

+ 2 - 3
demo/src/main/java/com/framework/mvvm/model/db/entity/task/ObjectEntity.kt

@@ -42,7 +42,6 @@ data class ObjectEntity(
     @ColumnInfo(name = "d2m_state") val d2mState: Int?,             // 逆向数据的数模同步状态(0:未同步;1:已同步)
     @ColumnInfo(name = "virtual_codes") val virtualCodes: String?,  // 虚点清单: Json 数据格式
     @ColumnInfo(name = "infos") var infos: JsonElement?,             // 信息点数据: Json 数据格式
-    @ColumnInfo(name = "str_infos") var strInfos: String?,          // 信息点数据: Json 数据格式
     @ColumnInfo(name = "floor_map") var floorMap: String?,          // 楼层地图
     @ColumnInfo(name = "container_id") var containerId: String? = ""     // 无模型设备的上级设备id
 ) : BaseEntity
@@ -70,7 +69,7 @@ data class Infos(
 
 data class Options(val txt: String, val `val`: String)
 
-data class StrInfos(
+data class InfosForObj(
     val floorMap: String,
     val state: String,
     val height: Int,
@@ -83,7 +82,7 @@ data class StrInfosforBuild(
     val height: Int,
 )
 
-data class StrInfosforEquip(
+data class InfosforEquip(
     val location: PointZ,
     var zRegion: String,
     var equipCheck: Any

+ 0 - 1
demo/src/main/java/com/framework/mvvm/model/db/entity/task/ProblemArchEntity.kt

@@ -28,5 +28,4 @@ data class ProblemArchEntity(
     @ColumnInfo(name = "problem_state") var problemState: Int?,    // 建筑结构核查任务状态(0:删除;1:有效;2:已解决)
     @ColumnInfo(name = "message") val message: String?,            // 问题描述
     @ColumnInfo(name = "geom") val geom: JsonElement?,                  // 问题记录的几何数据(Json)
-    @ColumnInfo(name = "strGeom") val strGeom: String?,            // 问题记录的几何数据(Json)
 ) : BaseEntity

+ 0 - 1
demo/src/main/java/com/framework/mvvm/model/db/entity/task/QrCodeEntity.kt

@@ -26,5 +26,4 @@ data class QrCodeEntity(
     @ColumnInfo(name = "obj_id") val objId: String,                         // 二维码对应的对象id
     @ColumnInfo(name = "remark") val remark: String?,                       // 描述信息
     @ColumnInfo(name = "location") val location: JsonElement?,                   // 位置坐标({x:1,y:1,z:1})
-    @ColumnInfo(name = "strLocation") val strLocation: String?,             // 位置坐标({x:1,y:1,z:1})
 ) : BaseEntity

+ 0 - 1
demo/src/main/java/com/framework/mvvm/model/db/entity/task/SpaceEntity.kt

@@ -29,7 +29,6 @@ data class SpaceEntity(
     @ColumnInfo(name = "arch_state") var archState: Int?,             // 建筑结构核查任务状态(0:待核查;1:核查中;2:核查完毕)
     @ColumnInfo(name = "equip_state") var equipState: Int?,           // 设备勘测任务状态(0:待勘测;1:勘测中;2:勘测完毕)
     @ColumnInfo(name = "outline") val outline: JsonElement? = null,           // 空间边界,模型更新空间变化时,用来做匹配计算
-    @ColumnInfo(name = "strOutline") val strOutline: String?,         // 空间边界,模型更新空间变化时,用来做匹配计算
 ) : BaseEntity
 
 /*

+ 4 - 4
demo/src/main/java/com/sybotan/android/demo/activities/EquipDetailActivity.kt

@@ -356,14 +356,14 @@ class EquipDetailActivity : BaseActivity(), View.OnTouchListener {
                     this.equip = equip
                     localId.setEtRight(equip.localId)
                     deviceId = equip.id
-                    val strInfo = Gson().fromJson(equip.strInfos, StrInfosforEquip::class.java)
-                    height.setTvRight(strInfo.location.z.toString())
+                    val infos = Gson().fromJson(equip.infos, InfosforEquip::class.java)
+                    height.setTvRight(infos.location.z.toString())
                     if (position!!.z == null) {
                         val z = Z()
-                        z.offset = strInfo.location.z.toString()
+                        z.offset = infos.location.z.toString()
                         position!!.z = z
                     } else {
-                        position!!.z.offset = strInfo.location.z.toString()
+                        position!!.z.offset = infos.location.z.toString()
                     }
                     if (this.equipEntity == null) {
                         for (eq in equips) {

+ 10 - 10
demo/src/main/java/com/sybotan/android/demo/activities/GraphyActivity.kt

@@ -59,7 +59,7 @@ import com.arashivision.sdkcamera.camera.callback.ICameraChangedCallback
 import com.arashivision.sdkcamera.camera.callback.ICaptureStatusListener
 import com.bumptech.glide.Glide
 import com.framework.mvvm.model.db.entity.task.ObjectEntity
-import com.framework.mvvm.model.db.entity.task.StrInfosforEquip
+import com.framework.mvvm.model.db.entity.task.InfosforEquip
 import com.framework.mvvm.mv.AdmViewModel
 import com.google.gson.Gson
 import com.google.gson.reflect.TypeToken
@@ -1735,25 +1735,25 @@ class GraphyActivity : BaseActivity(), ICaptureStatusListener, ICameraChangedCal
                 break
             }
         }
-        val strInfo = gson.fromJson(bus.equip.strInfos, StrInfosforEquip::class.java)
+        val info = gson.fromJson(bus.equip.infos, InfosforEquip::class.java)
         scene.type = "equip"
-        equipLocation.setText("(${strInfo.location.x},${-strInfo.location.y})")
+        equipLocation.setText("(${info.location.x},${-info.location.y})")
         drawLl.visibility = View.GONE
         equipLl.visibility = View.VISIBLE
         equipRg.clearCheck()
-        if (strInfo.zRegion.equals("roof")) {
+        if (info.zRegion.equals("roof")) {
             roof.isChecked = true
-        } else if (strInfo.zRegion.equals("floor")) {
+        } else if (info.zRegion.equals("floor")) {
             floor.isChecked = true
-        } else if (strInfo.zRegion.equals("wall")) {
+        } else if (info.zRegion.equals("wall")) {
             wall.isChecked = true
-        } else if (strInfo.zRegion.equals("air")) {
+        } else if (info.zRegion.equals("air")) {
             air.isChecked = true
         }
-        equipEdit.setText(strInfo.location.z.toString())
+        equipEdit.setText(info.location.z.toString())
 
-        scene.point.mX = strInfo.location.x
-        scene.point.mY = -strInfo.location.y
+        scene.point.mX = info.location.x
+        scene.point.mY = -info.location.y
         scene.point.equipState = 4
         scene.eqItem = EquipItem(this@GraphyActivity, scene.point)
         scene.eqItem!!.isVisible = true

+ 3 - 3
demo/src/main/java/com/sybotan/android/demo/viewmodel/BuildVM.kt

@@ -32,12 +32,12 @@ class BuildVM(app: Application, b: BaseViewModelInterface, a: BaseActivity) :
                 val floors = repo.getFloorByBuildingId(build.id, "floor")
                 var floorList = ArrayList<Floor>()
                 for (floor in floors) {
-                    val strInfo = Gson().fromJson(floor.strInfos, StrInfosforBuild::class.java)
+                    val infos = Gson().fromJson(floor.infos, StrInfosforBuild::class.java)
                     var floorMap = ""
-                    if (TextUtils.isEmpty(strInfo.floorMap)) {
+                    if (TextUtils.isEmpty(infos.floorMap)) {
                         floorMap = ""
                     } else {
-                        floorMap = strInfo.floorMap
+                        floorMap = infos.floorMap
                     }
                     var localId = ""
                     if (TextUtils.isEmpty(floor.localId)) {

+ 42 - 61
demo/src/main/java/com/sybotan/android/demo/viewmodel/GraphyVM.kt

@@ -83,8 +83,8 @@ class GraphyVM(
                 spaceJobModel.localName = objectEntity!!.localName
                 spaceJobModel.name = objectEntity.name
                 spaceJobModel.projectId = projectId
-                val strInfo = gson.fromJson(objectEntity.strInfos, StrInfos::class.java)
-                spaceJobModel.outline = strInfo.outline
+                val infos = gson.fromJson(objectEntity.infos, InfosForObj::class.java)
+                spaceJobModel.outline = infos.outline
                 spaceJobModel.objectEntity = objectEntity
                 if (from.equals("space")) {
                     val problems = repo.getProblemByAvalible(floorId)
@@ -101,7 +101,7 @@ class GraphyVM(
                     }
                     for (problem in problems) {
                         val geomList = gson.fromJson<List<PointF>>(
-                            problem.strGeom,
+                            problem.geom,
                             object : TypeToken<List<PointF?>?>() {}.type
                         )
                         for (gemo in geomList) {
@@ -198,19 +198,19 @@ class GraphyVM(
                         val child = Children()
                         child.deviceId = equip.id
                         child.name = equip.name
-                        val strInfo = gson.fromJson(equip.strInfos, StrInfosforEquip::class.java)
+                        val infos = gson.fromJson(equip.infos, InfosforEquip::class.java)
                         val eqProblems = repo.getEqProblem(equip.id)
                         //1-蓝 2-绿 3-红
                         if (eqProblems == null || TextUtils.isEmpty(eqProblems.id)) {
-                            if (strInfo.equipCheck is Double || strInfo.equipCheck is Int) {
+                            if (infos.equipCheck is Double || infos.equipCheck is Int) {
                                 when {
-                                    strInfo.equipCheck.toInt() == RMTristateSwitch.STATE_LEFT -> {
+                                    infos.equipCheck.toInt() == RMTristateSwitch.STATE_LEFT -> {
                                         child.type = 5
                                     }
-                                    strInfo.equipCheck.toInt() == RMTristateSwitch.STATE_MIDDLE -> {
+                                    infos.equipCheck.toInt() == RMTristateSwitch.STATE_MIDDLE -> {
                                         child.type = 1
                                     }
-                                    strInfo.equipCheck.toInt() == RMTristateSwitch.STATE_RIGHT -> {
+                                    infos.equipCheck.toInt() == RMTristateSwitch.STATE_RIGHT -> {
                                         child.type = 2
                                     }
                                 }
@@ -221,11 +221,11 @@ class GraphyVM(
                             child.type = 3
                         }
                         val position = Position()
-                        position.x = strInfo.location.x.toString()
-                        position.y = strInfo.location.y.toString()
+                        position.x = infos.location.x.toString()
+                        position.y = infos.location.y.toString()
                         val z = Z()
-                        z.offset = strInfo.location.z.toString()
-                        z.region = strInfo.zRegion
+                        z.offset = infos.location.z.toString()
+                        z.region = infos.zRegion
                         position.z = z
                         child.position = gson.toJson(position)
                         model.children.add(child)
@@ -239,19 +239,19 @@ class GraphyVM(
                     val child = Children()
                     child.deviceId = equip.id
                     child.name = equip.name
-                    val strInfo = gson.fromJson(equip.strInfos, StrInfosforEquip::class.java)
+                    val infos = gson.fromJson(equip.infos, InfosforEquip::class.java)
                     val eqProblems = repo.getEqProblem(equip.id)
                     if (eqProblems == null || TextUtils.isEmpty(eqProblems.id)) {
                         //type 1-蓝 2-绿 3-红 4-黄 5-紫
-                        if (strInfo.equipCheck is Double || strInfo.equipCheck is Int) {
+                        if (infos.equipCheck is Double || infos.equipCheck is Int) {
                             when {
-                                strInfo.equipCheck.toInt() == RMTristateSwitch.STATE_LEFT -> {
+                                infos.equipCheck.toInt() == RMTristateSwitch.STATE_LEFT -> {
                                     child.type = 5
                                 }
-                                strInfo.equipCheck.toInt() == RMTristateSwitch.STATE_MIDDLE -> {
+                                infos.equipCheck.toInt() == RMTristateSwitch.STATE_MIDDLE -> {
                                     child.type = 1
                                 }
-                                strInfo.equipCheck.toInt() == RMTristateSwitch.STATE_RIGHT -> {
+                                infos.equipCheck.toInt() == RMTristateSwitch.STATE_RIGHT -> {
                                     child.type = 2
                                 }
                             }
@@ -262,11 +262,11 @@ class GraphyVM(
                         child.type = 3
                     }
                     val position = Position()
-                    position.x = strInfo.location.x.toString()
-                    position.y = strInfo.location.y.toString()
+                    position.x = infos.location.x.toString()
+                    position.y = infos.location.y.toString()
                     val z = Z()
-                    z.offset = strInfo.location.z.toString()
-                    z.region = strInfo.zRegion
+                    z.offset = infos.location.z.toString()
+                    z.region = infos.zRegion
                     position.z = z
                     child.position = gson.toJson(position)
                     spaceModel.children.add(child)
@@ -332,13 +332,13 @@ class GraphyVM(
 //                        val child = ChildrenZ()
 //                        val objFrom = repo.getObject(pipe.objFrom!!)
 //                        val objTo = repo.getObject(pipe.objTo!!)
-//                        val strInfoFrom =
-//                            gson.fromJson(objFrom!!.strInfos, StrInfosforEquip::class.java)
-//                        child.position.add(PointF(strInfoFrom.location.x, strInfoFrom.location.y))
+//                        val infoFrom =
+//                            gson.fromJson(objFrom!!.infos, InfosforEquip::class.java)
+//                        child.position.add(PointF(infoFrom.location.x, infoFrom.location.y))
 //
-//                        val strInfoTo =
-//                            gson.fromJson(objTo!!.strInfos, StrInfosforEquip::class.java)
-//                        child.position.add(PointF(strInfoTo.location.x, strInfoTo.location.y))
+//                        val infoTo =
+//                            gson.fromJson(objTo!!.infos, InfosforEquip::class.java)
+//                        child.position.add(PointF(infoTo.location.x, infoTo.location.y))
 //                        model.children.add(child)
 //                        hasParent = true
 //                    }
@@ -350,12 +350,12 @@ class GraphyVM(
 //                    val child = ChildrenZ()
 //                    val objFrom = repo.getObject(pipe.objFrom!!)
 //                    val objTo = repo.getObject(pipe.objTo!!)
-//                    val strInfoFrom =
-//                        gson.fromJson(objFrom!!.strInfos, StrInfosforEquip::class.java)
-//                    child.position.add(PointF(strInfoFrom.location.x, strInfoFrom.location.y))
+//                    val infoFrom =
+//                        gson.fromJson(objFrom!!.infos, InfosforEquip::class.java)
+//                    child.position.add(PointF(infoFrom.location.x, infoFrom.location.y))
 //
-//                    val strInfoTo = gson.fromJson(objTo!!.strInfos, StrInfosforEquip::class.java)
-//                    child.position.add(PointF(strInfoTo.location.x, strInfoTo.location.y))
+//                    val infoTo = gson.fromJson(objTo!!.infos, InfosforEquip::class.java)
+//                    child.position.add(PointF(infoTo.location.x, infoTo.location.y))
 //                    pipeModel.children.add(child)
 //                    pipeModels.add(pipeModel)
 //                }
@@ -365,29 +365,11 @@ class GraphyVM(
 //        }
     }
 
-    fun getInfosConfig(spaceId: String) {
-        viewModelScope.launch {
-            val infosConfig = repo.getInfosConfigByObjType("space")
-            val strInfos = infosConfig.get(0).strInfos
-
-//            var infoList = gson.fromJson(strInfos, ArrayList<Infos>()::class.java)
-            var infoList = gson.fromJson<List<Infos>>(
-                strInfos,
-                object : TypeToken<List<Infos?>?>() {}.type
-            )
-            var spaceObject = repo.getObject(spaceId)
-            val infos = gson.fromJson(spaceObject!!.strInfos, HashMap::class.java)
-
-            mEmitter.SendDircetive(SPACE_INFOS, infos)
-            mEmitter.SendDircetive(SPACE_INFO, infoList)
-        }
-    }
-
     fun refreshObject(space: TunableSpace, hashMap: HashMap<String, Any>) {
         viewModelScope.launch {
             var space = repo.getObject(space.id!!)
 //            space!!.infos = JSONObject(hashMap as Map<*, *>)
-            space!!.strInfos = gson.toJson(hashMap)
+            space!!.infos = gson.toJsonTree(hashMap)
             space.state = "1"
             repo.insObject(space)
             mActivity.setResult(RESULT_OK)
@@ -409,7 +391,7 @@ class GraphyVM(
 
             if (!TextUtils.isEmpty(deviceId)) {
                 var equip = repo.getObject(deviceId)
-                val infos = gson.fromJson(equip!!.strInfos, HashMap::class.java)
+                val infos = gson.fromJson(equip!!.infos, HashMap::class.java)
                 mEmitter.SendDircetive(SPACE_INFOS, infos)
                 mEmitter.SendDircetive(Equip_INFOS, equip)
             }
@@ -423,9 +405,9 @@ class GraphyVM(
                 mEmitter.SendDircetive(EQUIP_INFO, null)
                 return@launch
             }
-            val strInfos = infosConfig.get(0).strInfos
+            val infos = infosConfig.get(0).infos
             val infoList = gson.fromJson<List<Infos>>(
-                strInfos,
+                infos,
                 object : TypeToken<List<Infos?>?>() {}.type
             )
             mEmitter.SendDircetive(EQUIP_INFO, infoList)
@@ -493,8 +475,7 @@ class GraphyVM(
                     deliveryState = null,
                     d2mState = null,
                     virtualCodes = null,
-                    infos = null,
-                    strInfos = gson.toJson(hashMap),
+                    infos = gson.toJsonTree(hashMap),
                     floorMap = null,
                     state = "1",
                     containerId = if (TextUtils.isEmpty(containerId)) "" else containerId
@@ -505,7 +486,7 @@ class GraphyVM(
 //                equip!!.infos = JSONObject(hashMap as Map<*, *>)
                 equip!!.classCode = equipEntity.code!!
                 equip.localId = localId
-                equip.strInfos = gson.toJson(hashMap)
+                equip.infos = gson.toJsonTree(hashMap)
                 equip.state = "1"
                 repo.insObject(equip)
             }
@@ -1024,14 +1005,14 @@ class GraphyVM(
     fun insEquip(ob: ObjectEntity, position: Position) {
         viewModelScope.launch {
             var obj = repo.getObject(ob.id)
-            val hashMap = gson.fromJson(obj!!.strInfos, HashMap::class.java) as HashMap<String, Any>
+            val hashMap = gson.fromJson(obj!!.infos, HashMap::class.java) as HashMap<String, Any>
             val z = PointZ()
             z.x = position.x.toFloat()
             z.y = -position.y.toFloat()
             z.z = position.z.offset.toFloat()
             hashMap.put("location", z)
             hashMap.put("zRegion", position.z.region)
-            obj.strInfos = gson.toJson(hashMap)
+            obj.infos = gson.toJsonTree(hashMap)
             obj.state = "1"
             repo.insObject(obj)
             mEmitter.SendDircetive(UPDATE_LOCATION, null)
@@ -1057,8 +1038,8 @@ class GraphyVM(
             val equip = repo.getObject(deviceId)
             val configs = repo.getContainerConfig(equip!!.classCode!!)
             val hashMap = HashMap<String, Any>()
-            hashMap.put("configs",configs)
-            hashMap.put("objs",objs)
+            hashMap.put("configs", configs)
+            hashMap.put("objs", objs)
             mEmitter.SendDircetive(CONTAINER_EQUIP, hashMap)
         }
     }

+ 2 - 2
demo/src/main/java/com/sybotan/android/demo/viewmodel/SpaceDetailVM.kt

@@ -49,7 +49,7 @@ class SpaceDetailVM(
                 object : TypeToken<List<Infos?>?>() {}.type
             )
             val spaceObject = repo.getObject(spaceId)
-            val infos = gson.fromJson(spaceObject!!.strInfos, HashMap::class.java)
+            val infos = gson.fromJson(spaceObject!!.infos, HashMap::class.java)
             mEmitter.SendDircetive(SPACE_INFOS, infos)
             mEmitter.SendDircetive(SPACE_INFO, infoList)
         }
@@ -61,7 +61,7 @@ class SpaceDetailVM(
     fun refreshObject(space: TunableSpace, hashMap: HashMap<String, Any>) {
         viewModelScope.launch {
             val spaceObj = repo.getObject(space.id!!)
-            spaceObj!!.strInfos = gson.toJson(hashMap)
+            spaceObj!!.infos = gson.toJsonTree(hashMap)
             spaceObj.state = "1"
             repo.insObject(spaceObj)
             mActivity.setResult(RESULT_OK)

+ 9 - 11
demo/src/main/java/com/sybotan/android/demo/viewmodel/SpaceMapVM.kt

@@ -70,8 +70,8 @@ class SpaceMapVM(
                 spaceJobModel.localName = objectEntity!!.localName
                 spaceJobModel.name = objectEntity.name
                 spaceJobModel.projectId = projectId
-                val strInfo = gson.fromJson(objectEntity.strInfos, StrInfos::class.java)
-                spaceJobModel.outline = strInfo.outline
+                val infos = gson.fromJson(objectEntity.infos, InfosForObj::class.java)
+                spaceJobModel.outline = infos.outline
                 spaceJobModel.objectEntity = objectEntity
                 val problems = repo.getProblemByAvalible(floorId)
                 var hasProblem = false
@@ -87,7 +87,7 @@ class SpaceMapVM(
                 }
                 for (problem in problems) {
                     val geomList = gson.fromJson<List<PointF>>(
-                        problem.strGeom,
+                        problem.geom,
                         object : TypeToken<List<PointF?>?>() {}.type
                     )
                     for (gemo in geomList) {
@@ -160,7 +160,7 @@ class SpaceMapVM(
                     array.add(position)
                 }
             }
-            val toJson: String = gson.toJson(array)
+            val toJson = gson.toJsonTree(array)
             val toString = if (point != null && !TextUtils.isEmpty(point.data.id)) {
                 point.data.id!!
             } else {
@@ -183,9 +183,8 @@ class SpaceMapVM(
                 modifiedTime = "",
                 uploadFlag = "",
                 valid = 1,
-                strGeom = toJson,
                 state = "1",
-                geom = null
+                geom = toJson
             )
             repo.insProblem(problem)
 
@@ -244,7 +243,7 @@ class SpaceMapVM(
                     promodel.id = problem.id
 
                     val geomList = gson.fromJson<List<PointF>>(
-                        problem.strGeom,
+                        problem.geom,
                         object : TypeToken<List<PointF?>?>() {}.type
                     )
                     promodel.geomType = problem.geomType
@@ -297,7 +296,7 @@ class SpaceMapVM(
             pointZ.x = point.mX
             pointZ.y = point.mY
             pointZ.z = toString.toFloat()
-            val toJson = gson.toJson(pointZ)
+            val toJson = gson.toJsonTree(pointZ)
             val qrcode = QrCodeEntity(
                 id = UUID.randomUUID().toString(),
                 qrCode = result!!,
@@ -305,14 +304,13 @@ class SpaceMapVM(
                 projectId = projectId,
                 buildingId = buildingId,
                 floorId = floorId,
-                strLocation = toJson,
                 remark = "wall",
                 creator = "Anroid",
                 creationTime = "",
                 modifier = "Android",
                 modifiedTime = "",
                 valid = 1,
-                uploadFlag = "", state = "1", location = null
+                uploadFlag = "", state = "1", location = toJson
             )
             repo.insQrcode(qrcode)
             mEmitter.SendDircetive(BIND_QECODE, null)
@@ -332,7 +330,7 @@ class SpaceMapVM(
                 val qrcodeModel = QrcodeModel()
                 qrcodeModel.obj_id = qrcode.objId
                 qrcodeModel.qr_code = qrcode.qrCode
-                val pointZ = gson.fromJson(qrcode.strLocation, PointZ::class.java)
+                val pointZ = gson.fromJson(qrcode.location, PointZ::class.java)
                 val position = Position()
                 position.x = pointZ.x.toString()
                 position.y = pointZ.y.toString()