Ejemplo n.º 1
0
        public override void OnMouseDown(Troll3D.MouseEvent e)
        {
            if (e.mouse_.rightbutton)
            {
                RaycastResult result = TRaycast.FireRayFromMouse();

                if (result.GetEntity() != null)
                {
                    MeshRenderer mr = ( MeshRenderer )result.GetEntity().GetComponent(ComponentType.MeshRenderer);
                    mr.material_.SetMainColor(1.0f, 1.0f, 0.0f, 1.0F);
                }
            }
        }
Ejemplo n.º 2
0
        public override void OnMouseDown(MouseEvent e)
        {
            base.OnMouseDown(e);

            if (e.mouse_.rightbutton)
            {
                RaycastResult result = TRaycast.FireRayFromMouse();

                if (result.GetEntity() == Entity)
                {
                    IsBeingDragged    = true;
                    IntersectionPoint = result.GetIntersectionPoint();
                    DraggedOffset     = Entity.transform_.WorldPosition() - IntersectionPoint;
                }
            }
        }
Ejemplo n.º 3
0
        public override void OnMouseMove(MouseEvent e)
        {
            if (IsBeingDragged)
            {
                // Pour savoir comment déplacer l'objet, on a besoin de récupérer le plan de la caméra
                // Un plan est définit par un point et deux vecteurs directeurs

                // On commence par récupérer les 2 vecteurs directeurs, en convertissant les vecteurs up et right
                // à la caméra

                Vector3 right = (Vector3)(Vector4.Transform(new Vector4(1.0f, 0.0f, 0.0f, 0.0f), Camera.Main.m_transform.GetViewMatrix()));
                Vector3 up    = ( Vector3 )(Vector4.Transform(new Vector4(0.0f, 1.0f, 0.0f, 0.0f), Camera.Main.m_transform.GetViewMatrix()));

                // On construit le plan en utilisant le point d'intersection
                Troll3D.Plane plane = new Troll3D.Plane(IntersectionPoint, right, up);

                // On récupère le rayon correspondant à la position actuelle de la souris dans l'espace
                TrollRay ray = TRaycast.GetRayFromMouse();

                Vector3 point = plane.IntersectionWithLine(new LineGeometry(ray.start_, ray.direction_));

                Entity.transform_.SetPosition(point + DraggedOffset);
            }
        }