예제 #1
0
    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);
        }
    }
예제 #2
0
    //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);
        }
    }
예제 #3
0
 private void TeleportPosition(object sender, LaserPointer.PointerEventArgs e)
 {
     target  = e.target;
     hitInfo = e.hitInfo;
 }
예제 #4
0
    private void HandlePointerOut(object sender, LaserPointer.PointerEventArgs e)
    {
        laserPointer.pointerModel.GetComponent <MeshRenderer>().material.color = laserDefaultColor;

        damage = false;
    }
예제 #5
0
 private void HandlePointerIn(object sender, LaserPointer.PointerEventArgs e)
 {
     laserPointer.pointerModel.GetComponent <MeshRenderer>().material.color = Color.red;
 }
예제 #6
0
    /// <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);
            }
        }
    }
예제 #7
0
 private void HandleInvPointerUpdate(object sender, LaserPointer.PointerEventArgs e)
 {
     invHitObj = e;
 }
예제 #8
0
 private void HandleInvPointerOut(object sender, LaserPointer.PointerEventArgs e)
 {
     invHitTarget = false;
     laserPointer.InvPointerUpdate -= HandleInvPointerUpdate;
 }
예제 #9
0
 private void HandleInvPointerIn(object sender, LaserPointer.PointerEventArgs e)
 {
     invHitTarget = true;
     invHitObj    = e;
     laserPointer.InvPointerUpdate += HandleInvPointerUpdate;
 }