//update layer gameobject content when map initialized , moved. private void LayerUpdate() { //check initialized var visualizer = mapToEdit.MapVisualizer; visualizer.OnMapVisualizerStateChanged += (s) => { if (this == null) { return; } if (s == ModuleState.Finished) { if (this.Lock) { List <UnwrappedTileId> tileIds = mapToEdit.MapVisualizer.ActiveTiles.Keys.ToList(); foreach (LayerMetaphor lm in layerMetaphorsActived) { lm.update(tileIds); } foreach (LayerMetaphor lm in layerMetaphorsDisActived) { lm.update(tileIds); } this.Lock = false; if (!oldVersion) { handle.getMetaphorObject().GetComponent <FaceCamera>().enabled = true; bin.getMetaphorObject().GetComponent <FaceCamera>().enabled = true; } } } else if (s == ModuleState.Working) { this.Lock = true; if (!oldVersion) { handle.getMetaphorObject().GetComponent <FaceCamera>().enabled = false; bin.getMetaphorObject().GetComponent <FaceCamera>().enabled = false; } } }; }
public override float distanceToCenter(Vector3 pinchingPos) { if (handle == null) { return(base.distanceToCenter(pinchingPos)); } else { Collider coll = worldObject.GetComponent <Collider>(); Vector3 handlePos = handle.getMetaphorObject().transform.position; Vector3 collCenter = coll.bounds.center; float distance = Vector3.Distance(new Vector3(handlePos.x, collCenter.y, handlePos.z), pinchingPos); return(distance); } }