private void HandlePointerOut(object sender, LaserPointer.PointerEventArgs e) { laserPointer.pointerModel.GetComponent <MeshRenderer>().material.color = laserPointerDefaultColor; hitTarget = false; laserPointer.PointerUpdate -= HandlePointerUpdate; if (!saving) { saving = true; Invoke("SaveTexture", 0.1f); } }
//Returns the position on the texuremap according to a hit in the mesh collider bool HitTestUVPosition(ref Vector3 uvWorldPosition, LaserPointer.PointerEventArgs hit) { // check that a target was hit and that it's marked as something we can color if ((hit.target != null) && (hit.target.GetComponent <Colorable>() != null)) { PickCanvas(hit.target); Vector2 pixelUV = new Vector2(hit.textureCoord.x, hit.textureCoord.y); uvWorldPosition.x = pixelUV.x - canvasCam.orthographicSize; //To center the UV on X uvWorldPosition.y = pixelUV.y - canvasCam.orthographicSize; //To center the UV on Y uvWorldPosition.z = 0.0f; return(true); } else { return(false); } }
private void TeleportPosition(object sender, LaserPointer.PointerEventArgs e) { target = e.target; hitInfo = e.hitInfo; }
private void HandlePointerOut(object sender, LaserPointer.PointerEventArgs e) { laserPointer.pointerModel.GetComponent <MeshRenderer>().material.color = laserDefaultColor; damage = false; }
private void HandlePointerIn(object sender, LaserPointer.PointerEventArgs e) { laserPointer.pointerModel.GetComponent <MeshRenderer>().material.color = Color.red; }
/// <summary> /// Colours the hit target supplied /// </summary> /// <param name="bcolor">What colour to colour with.</param> /// <param name="hit">A raycast target from laser pointer.</param> void DoColor(Color bcolor, LaserPointer.PointerEventArgs hit) { // While saving brush strokes onto the texture, don't allow coloring if (saving) { return; } Vector3 uvWorldPosition = Vector3.zero; if (HitTestUVPosition(ref uvWorldPosition, hit)) { GameObject brushObj; brushObj = (GameObject)Instantiate(Resources.Load("BrushEntity")); //Paint a brush //TODO: Replace this with public properties and assignable brushes if (hit.angle < 130) { brushSize = 0.25f; bcolor.a = brushSize * 2.0f; // Brushes have alpha to have a merging effect when painted over. } else if (hit.angle < 140) { brushSize = 0.2f; bcolor.a = brushSize * 2.0f; // Brushes have alpha to have a merging effect when painted over. } else if (hit.angle < 150) { brushSize = 0.10f; bcolor.a = 0.6f; // Brushes have alpha to have a merging effect when painted over. } else { brushSize = 0.05f; bcolor.a = 1f; // Brushes have alpha to have a merging effect when painted over. } brushObj.GetComponent <SpriteRenderer>().color = bcolor; //Set the brush color AudioSource audio = GetComponent <AudioSource>(); if (!audio.isPlaying) { audio.Play(); } SteamVR_Controller.Input((int)hit.controllerIndex).TriggerHapticPulse(100); brushObj.transform.parent = brushContainer.transform; //Add the brushstroke to our container to be wiped later brushObj.transform.localPosition = uvWorldPosition; //The position of the brush (in the UVMap) brushObj.transform.localScale = Vector3.one * brushSize; //The size of the brush brushCounter++; //Add to the max brushes //If we reach the max brushes available, flatten the texture and clear the brushes if (brushCounter >= MAX_BRUSH_COUNT) { saving = true; Invoke("SaveTexture", 0.1f); } } }
private void HandleInvPointerUpdate(object sender, LaserPointer.PointerEventArgs e) { invHitObj = e; }
private void HandleInvPointerOut(object sender, LaserPointer.PointerEventArgs e) { invHitTarget = false; laserPointer.InvPointerUpdate -= HandleInvPointerUpdate; }
private void HandleInvPointerIn(object sender, LaserPointer.PointerEventArgs e) { invHitTarget = true; invHitObj = e; laserPointer.InvPointerUpdate += HandleInvPointerUpdate; }