tags:

views:

200

answers:

2

hi. i have this code. this code get executed after a push of button.

    using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using xnaWindow.FormUI;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Graphics;

namespace xnaWindow.MathClass
{    
    public class Math_Vector 
    {
        private Vector3 vectorA;
        private Vector3 vectorB;
        private Vector3 vectorR;
        private List<float> vResult;

        VertexPositionColor[] verts1,verts2,verts3;

        public void calculate(List<float>v1,List<float>v2)
        {
            Console.WriteLine("calculating..");

            vResult = new List<float>(); 
            vectorA = new Vector3(v1.ElementAt(0), v1.ElementAt(1), v1.ElementAt(2));  
            vectorB = new Vector3(v2.ElementAt(0), v2.ElementAt(1), v2.ElementAt(2)); 

            //this is the manual calculation of vector addition
            float xRes = v1.ElementAt(0) + v2.ElementAt(0);
            float yRes = v1.ElementAt(1) + v2.ElementAt(1);
            float zRes = v1.ElementAt(2) + v2.ElementAt(2);

            vectorR = new Vector3(xRes,yRes,zRes);
            //vectorR = vectorA + vectorB; 

            verts1    = new VertexPositionColor[2];
            verts1[0] = new VertexPositionColor(new Vector3(0, 0, 0), Color.Black);
            verts1[1] = new VertexPositionColor(vectorA, Color.Black);

            verts2    = new VertexPositionColor[2];
            verts2[0] = new VertexPositionColor(new Vector3(0, 0, 0), Color.Black);
            verts2[1] = new VertexPositionColor(vectorB, Color.Black);

            verts3    = new VertexPositionColor[2];
            verts3[0] = new VertexPositionColor(new Vector3(0, 0, 0), Color.Black);
            verts3[1] = new VertexPositionColor(vectorR, Color.Black);

            int i = 0;
            //this is for console debug
            foreach (float va in v1)
            {
                Console.WriteLine("adding " + va.ToString() + v2.ElementAt(i).ToString());
                vResult.Add(va+v2.ElementAt(i));
                i++;
            }

        }

        public Vector3 getV1(){return vectorA;}
        public Vector3 getV2(){return vectorB;}
        public Vector3 getV3(){return vectorR;}

        public VertexPositionColor[] getVertex1( )
        { 
            return verts1;
        } 
        public VertexPositionColor[] getVertex2()
        {
            return verts2;
        }
        public VertexPositionColor[] getVertex3()
        {
            return verts3;
        }
    }
}

the strange thing is, verts1, vertes2,verts3 always get nulled after it exit the function. so the getters method i have called after executing that always return null.

what should i do guys?

this is my call for the getters

math.calculate(v1, v2);
verts1 = math.getVertex1();
verts2 = math.getVertex2();
verts3 = math.getVertex3();
+1  A: 

If I had to guess I'm pretty sure you are using structs instead of classes. And most likely you just treat the struct instances as you would do with classes forgetting that they are copy-by-value. So you likely get an uninitialized one at some place (What you are seeing as "NULL").

Foxfire
+1, sounds like the most reasonable conclusion anyone here is going to come up with until you can share more of the code.
csharptest.net
nope. it is a class. and none of them are struct. i had the problem before with the struct, but i have changed them to class.
r4ccoon
here is the link to my project.http://www.mediafire.com/?sharekey=ff6f03bd91e7612bab1eab3e9fa335ca0b62c612f301a16b
r4ccoon
A: 

after fiddling the codes for 3 days, i now know what the problem are. if you downloaded my code, and havent noticed it,

apparently the program were confused which textbox do they need to calculate, and which button that trigger what. that were caused by controls in a List<>

in the form_ui there are some method to add some controls into the list<>. i have put the code that removes the content of the list from the container. but it still not deleting the inside. !!!!!!!!!!!!!!! XDXP

so i have to put clear() in the List. then everything inside are gone.

now that problem are gone.

r4ccoon