//! //! single touch ended (called by Mouse or Touch Input) //! @param pos screen position of pointer //! public void singlePointerEnded(Vector3 pos) { pointerDown = false; if (mainController.ActiveMode == MainController.Mode.lightSettingsMode && editingLight) { if (!mainController.liveMode) { mainController.sendUpdateToServer(); } undoRedoController.addAction(); editingLight = false; return; } if (!pause) { //pause is active when avaoiding double interactions if (!pointerOnGUI()) { //oneForAll mode if (mainController.ActiveMode == MainController.Mode.oneForAllMode) { undoRedoController.addAction(); hitPositionBuffer = nullVector; return; } //pointToMove active if (mainController.ActiveMode == MainController.Mode.pointToMoveMode || mainController.ActiveMode == MainController.Mode.pointShootTranslation) { mainController.hidePointToMoveIdentifier(objectRaycast(pos, groundPlane)); return; } if (!(mainController.ActiveMode == MainController.Mode.translationMode || mainController.ActiveMode == MainController.Mode.rotationMode || mainController.ActiveMode == MainController.Mode.scaleMode || mainController.ActiveMode == MainController.Mode.animationEditing)) { //selection mode is active GameObject hitObject = cameraRaycast(pos, defaultLayermask); if (hitObject) { //Object was hit mainController.handleSelection(hitObject.transform); hitObject = null; } } else { //editing mode is active if (pointerOnModifier) { pointerOnModifier = false; mainController.resetModifiers(); hitPositionBuffer = nullVector; if (mainController.AnimationController.isActive) { mainController.AnimationController.setKeyFrame(); } } } } } else { pause = false; } //reset variables lastTime = float.NaN; pointerOnModifier = false; }
//! //! Update is called once per frame //! void Update() { if (lastPosition != target.position) { lastPosition = target.position; translationStillFrameCount = 0; } else if (translationStillFrameCount < 11) { translationStillFrameCount++; } if (lastRotation != target.rotation) { lastRotation = target.rotation; rotationStillFrameCount = 0; } else if (rotationStillFrameCount < 11) { rotationStillFrameCount++; } if (translationStillFrameCount >= 10 && rotationStillFrameCount >= 10 && tempLock) { tempLock = false; } if (!locked && !tempLock) { //publish translation change if (mainController.liveMode) { if (translationStillFrameCount == 0) //position just changed { if ((Time.time - lastTranslationUpdateTime) >= updateIntervall) { // serverAdapter.sendTranslation(target, target.position, !selected); serverAdapter.sendTranslation(target, !selected); serverAdapter.sendTransform(target, !selected); lastTranslationUpdateTime = Time.time; translationUpdateDelayed = false; } else { translationUpdateDelayed = true; } } else if (translationUpdateDelayed) //update delayed, but object not moving { // serverAdapter.sendTranslation(target, target.position, !selected); serverAdapter.sendTranslation(target, !selected); serverAdapter.sendTransform(target, !selected); lastTranslationUpdateTime = Time.time; translationUpdateDelayed = false; } } else if (translationStillFrameCount == 10) //object is now no longer moving { // serverAdapter.sendTranslation(target, target.position, !selected); serverAdapter.sendTranslation(target, !selected); serverAdapter.sendTransform(target, !selected); } //publish rotation change if (mainController.liveMode) { if (rotationStillFrameCount == 0) //position just changed { if ((Time.time - lastRotationUpdateTime) >= updateIntervall) { // serverAdapter.sendRotation(target, target.rotation, !selected); serverAdapter.sendRotation(target, !selected); serverAdapter.sendTransform(target, !selected); lastRotationUpdateTime = Time.time; rotationUpdateDelayed = false; } else { rotationUpdateDelayed = true; } } else if (rotationUpdateDelayed) //update delayed, but object not moving { //serverAdapter.sendRotation(target, target.rotation, !selected); serverAdapter.sendRotation(target, !selected); serverAdapter.sendTransform(target, !selected); lastRotationUpdateTime = Time.time; rotationUpdateDelayed = false; } } else if (rotationStillFrameCount == 10) //object is now no longer moving { // serverAdapter.sendRotation(target, target.rotation, !selected); serverAdapter.sendRotation(target, !selected); serverAdapter.sendTransform(target, !selected); } } //turn on highlight modes if (selected && drawGlowAgain) { if (lightGeo) { lightGeo.GetComponent <Renderer>().enabled = true; } else { this.showHighlighted(this.gameObject); } drawGlowAgain = false; } //turn off highlight mode else if (!selected && !drawGlowAgain) { if (lightGeo) { lightGeo.GetComponent <Renderer>().enabled = false; } else { this.showNormal(this.gameObject); } drawGlowAgain = true; } //execute smooth translate if (smoothTranslationActive) { target.position = Vector3.Lerp(target.position, targetTranslation, Time.deltaTime * translationDamping); if (Vector3.Distance(target.position, targetTranslation) < 0.0001f) { target.position = targetTranslation; // HACK: to key pointToMove // //if ( mainController.UIAdapter.LayoutUI == layouts.ANIMATION ) // animationController.setKeyFrame(); smoothTranslationActive = false; } if ((Time.time - smoothTranslateTime) > 3.0f) { smoothTranslationActive = false; // HACK: to key pointToMove // //if (mainController.UIAdapter.LayoutUI == layouts.ANIMATION) // animationController.setKeyFrame(); undoRedoController.addAction(); } } }