How to apply click event on VertexBuffer in a DrawingSuface control in Silverlight 5 (3D)

Unanswered How to apply click event on VertexBuffer in a DrawingSuface control in Silverlight 5 (3D)

  • Tuesday, April 10, 2012 6:11 AM
     
      Has Code

    Hi All,

    I'm working on Silverlight 5(3D) application using drawing surface control.

    I'm drawing multiple cubes on a drawing surface control now, how do i get a trigger on click of the particular cube?

    here is my code to add cubes to the drawing surface control

    for (int i = 0; i < 5; i++)
    {
       VertexBuffer vbCube;
       vbCube = CreateCube(X, Y, Z, Length, Bredth, Depth, Color.Black,Color.Red);
    
      resourceGraphicDevice.SetVertexBuffer(vbCube);
      resourceGraphicDevice.DrawPrimitives(PrimitiveType.TriangleList, 0, 12);
    }
    
    
    
    VertexBuffer CreateCube(float x,float y,float z, float length, float bredth, float depth, Color foreColor, Color backColor)
            {
                // cube vertices
                var vertexCollection = new VertexPositionColor[36];
    
                // Front
                // C(x,        y,       z+bredth)
                // D(x+length, y,       z+bredth)
                // A(x,        y+depth, z+bredth)
                // B(x+length, y+depth, z+bredth)
                // A-----------------B
                // |                 |
                // |                 |
                // |                 |
                // C-----------------D
                //  
                // Back
                // G(x,        y,       z)
                // H(x+length, y,       z)
                // E(x,        y+depth, z)
                // F(x+length, y+depth, z)
                //    E-----------------F
                //    |                 |
                //    |                 |
                //    |                 |
                //    G-----------------H
    
                // front coordinates
                Vector3 cubeA = new Vector3(x, y + depth, z + bredth);
                Vector3 cubeB = new Vector3(x + length, y + depth, z + bredth);
                Vector3 cubeC = new Vector3(x, y, z + bredth);
                Vector3 cubeD = new Vector3(x + length, y, z + bredth);
    
                // back coordinates
                Vector3 cubeE = new Vector3(x, y + depth, z);
                Vector3 cubeF = new Vector3(x + length, y + depth, z);
                Vector3 cubeG = new Vector3(x, y, z);
                Vector3 cubeH = new Vector3(x + length, y, z);
    
                // front 
                vertexCollection[0] = new VertexPositionColor(cubeA, foreColor);
                vertexCollection[1] = new VertexPositionColor(cubeB, foreColor);
                vertexCollection[2] = new VertexPositionColor(cubeC, backColor);
                vertexCollection[3] = new VertexPositionColor(cubeB, foreColor);
                vertexCollection[4] = new VertexPositionColor(cubeD, backColor);
                vertexCollection[5] = new VertexPositionColor(cubeC, backColor);
    
                // back  
                vertexCollection[6] = new VertexPositionColor(cubeG, backColor);
                vertexCollection[7] = new VertexPositionColor(cubeF, foreColor);
                vertexCollection[8] = new VertexPositionColor(cubeE, foreColor);
                vertexCollection[9] = new VertexPositionColor(cubeH, backColor);
                vertexCollection[10] = new VertexPositionColor(cubeF, foreColor);
                vertexCollection[11] = new VertexPositionColor(cubeG, backColor);
    
                // top 
                vertexCollection[12] = new VertexPositionColor(cubeE, foreColor);
                vertexCollection[13] = new VertexPositionColor(cubeF, foreColor);
                vertexCollection[14] = new VertexPositionColor(cubeA, foreColor);
                vertexCollection[15] = new VertexPositionColor(cubeF, foreColor);
                vertexCollection[16] = new VertexPositionColor(cubeB, foreColor);
                vertexCollection[17] = new VertexPositionColor(cubeA, foreColor);
    
                // bottom  
                vertexCollection[18] = new VertexPositionColor(cubeH, backColor);
                vertexCollection[19] = new VertexPositionColor(cubeG, backColor);
                vertexCollection[20] = new VertexPositionColor(cubeC, backColor);
                vertexCollection[21] = new VertexPositionColor(cubeD, backColor);
                vertexCollection[22] = new VertexPositionColor(cubeH, backColor);
                vertexCollection[23] = new VertexPositionColor(cubeC, backColor);
    
                // left 
                vertexCollection[24] = new VertexPositionColor(cubeC, backColor);
                vertexCollection[25] = new VertexPositionColor(cubeG, backColor);
                vertexCollection[26] = new VertexPositionColor(cubeA, foreColor);
                vertexCollection[27] = new VertexPositionColor(cubeA, foreColor);
                vertexCollection[28] = new VertexPositionColor(cubeG, backColor);
                vertexCollection[29] = new VertexPositionColor(cubeE, foreColor);
    
                // right  
                vertexCollection[30] = new VertexPositionColor(cubeH, backColor);
                vertexCollection[31] = new VertexPositionColor(cubeD, backColor);
                vertexCollection[32] = new VertexPositionColor(cubeB, foreColor);
                vertexCollection[33] = new VertexPositionColor(cubeH, backColor);
                vertexCollection[34] = new VertexPositionColor(cubeB, foreColor);
                vertexCollection[35] = new VertexPositionColor(cubeF, foreColor);
    
                var vb = new VertexBuffer(resourceGraphicDevice, VertexPositionColor.VertexDeclaration,
                vertexCollection.Length, BufferUsage.WriteOnly);
                vb.SetData(0, vertexCollection, 0, vertexCollection.Length, 0);
                return vb;
            }

    Now, from this code how do i get a click event of a particular cube....?


    Nagarjuna Dilip

All Replies

  • Tuesday, April 17, 2012 4:41 AM
     
     

    Hi,

    Can any one help me on this....?


    Nagarjuna Dilip

  • Wednesday, April 25, 2012 11:42 AM
     
     

    .........Any Experts......?


    Nagarjuna Dilip