/// <summary>
        ///
        /// </summary>
        /// <param name="scene"></param>
        /// <param name="pos">position</param>
        /// <param name="owner">owner gameobject ex. cCharacter</param>
        /// <param name="direction">normalized vector of direction</param>
        public cBullet(cGameObject owner, BulletBreed breed, Vector2f pos, Vector2f direction) : base(owner.Scene, pos)
        {
            this.owner = owner;
            this.breed = breed;

            this.alive = true;
            this.alpha = 255.0f;
            // proci határozza meg, hogy milyen alaplap foglalat és milyen RAM!!
            this.heading = direction;
            this.Bounds  = new AABB();
            this.Bounds.SetDims(new Vector2f(1.0f, 1.0f));
            this.oppositeDir  = new Vector2f(-this.heading.X * breed.slugLength, -this.heading.Y * breed.slugLength);
            this.intersection = new Vector2f(0.0f, 0.0f);
            this.Bounds.SetPosByTopLeft(pos);
            this.velocity.X = this.heading.X * breed.startSpeed;
            this.velocity.Y = this.heading.Y * breed.startSpeed;
            orientation     = AppMath.GetAngleOfVector(heading);

            this.sprite          = new Sprite(this.breed.sprite); // bullet_yellow_sm; bullet_light_gree
            this.sprite.Rotation = (float)AppMath.RadianToDegress(this.orientation);
        }
        public override void BuildVertexBuffer(float alpha)
        {
            uint multiplier = 4;
            uint vNum       = ((uint)pool.CountActive * multiplier) + 1;

            //vertices.Clear();
            vertices.Resize(vNum);

            float division = 2.0f;

            Vector2u uSize  = this.renderStates.Texture.Size;
            float    tSizeX = uSize.X;
            float    tSizeY = uSize.Y;

            Vector2f halfDims = new Vector2f();

            for (int i = 0; i < pool.CountActive; ++i)
            {
                Particle p = pool.get(i);

                halfDims.X = p.Dims.X / division;
                halfDims.Y = p.Dims.Y / division;

                p.ViewPos = AppMath.Interpolate(p.Pos, p.LastPos, alpha);

                uint vertexIndex = (uint)i * multiplier;

                Vector2f v0Pos = new Vector2f(p.ViewPos.X - halfDims.X,
                                              p.ViewPos.Y - halfDims.Y);

                Vector2f v1Pos = new Vector2f(p.ViewPos.X + halfDims.X,
                                              p.ViewPos.Y - halfDims.Y);

                Vector2f v2Pos = new Vector2f(p.ViewPos.X + halfDims.X,
                                              p.ViewPos.Y + halfDims.Y);

                Vector2f v3Pos = new Vector2f(p.ViewPos.X - halfDims.X,
                                              p.ViewPos.Y + halfDims.Y);


                // if want rotation included:
                Transform rot = Transform.Identity;
                rot.Rotate((float)AppMath.RadianToDegress(p.Rotation), p.ViewPos);

                v0Pos = rot.TransformPoint(v0Pos);
                v1Pos = rot.TransformPoint(v1Pos);
                v2Pos = rot.TransformPoint(v2Pos);
                v3Pos = rot.TransformPoint(v3Pos);

                // END of rotation code

                // Top-left
                Vertex v0 = new Vertex(
                    v0Pos,
                    p.Color,
                    new Vector2f(0.0f, 0.0f)
                    );

                // Top-right
                Vertex v1 = new Vertex(
                    v1Pos,
                    p.Color,
                    new Vector2f(tSizeX, 0.0f)
                    );

                // Bottom-right
                Vertex v2 = new Vertex(
                    v2Pos,
                    p.Color,
                    new Vector2f(tSizeX, tSizeY)
                    );

                //Bottom-left
                Vertex v3 = new Vertex(
                    v3Pos,
                    p.Color,
                    new Vector2f(0.0f, tSizeY)
                    );

                vertices[vertexIndex + 0] = v0;
                vertices[vertexIndex + 1] = v1;
                vertices[vertexIndex + 2] = v2;
                vertices[vertexIndex + 3] = v3;
            }
        }