thx Michael,
fixed and in trunk

> because someone was writting it probably at 3 am ;)(Fabrice?)
probably true :)

Fabrice


On Jul 23, 2010, at 3:51 PM, Michael Iv wrote:

> There is a bug in Drag3D class, Actually it is just syntax miss, If you set 
> the plane to "zy" it would throw you " Unvalid plane description error ...", 
> because someone was writting it probably at 3 am ;)(Fabrice?) und did not put 
> after the last caase break ; terminator .So please , if someone can update it 
> on the trunk.
> Nice weekend to everybody...
> 
>  
> On Wed, Jun 2, 2010 at 11:24 AM, Fabrice3D <[email protected]> wrote:
> interresting...
> so I guess, fix would be to project from camera pos instead of mouse using 
> same ray dir...
> thx for pointing that out, will try implement a fix to it asap.
> 
> in meanwhile keep away from cam :))
> 
> Fabrice
> 
> 
> On Jun 2, 2010, at 12:37 AM, abowman wrote:
> 
> > Thanks for the test class.
> >
> > I was able to reproduce my problem in your code by placing the camera
> > closer to the sphere and making the sphere smaller.  Is there a bug in
> > the Drag3D class or am I just not using the camera correctly?
> >
> > http://abowman.nozonenet.com/away3d/Drag3DTest.as
> > http://abowman.nozonenet.com/away3d/Drag3DTest.swf
> >
> > Thanks for your help.
> >
> > BTW, I purchased the new Away3D book and I'm finding it very helpful.
> > I was able to get my code working using that, but would really like to
> > be able to use this Drag3D class rather than using a plane primitive.
> >
> >
> > On Jun 1, 5:25 am, Fabrice3D <[email protected]> wrote:
> >> I haven't debugged your code, (that would be your job :)) )
> >> but made quick test class using latest 3.5 to test class itself, all seams 
> >> fine to me.
> >>
> >> I would check if the mouse coordinates are correct in your case.
> >>
> >> Fabrice
> >>
> >> package{
> >>         import flash.display.*;
> >>         import flash.events.*;
> >>         import away3d.containers.Scene3D;
> >>         import away3d.containers.View3D;
> >>         import away3d.core.base.Object3D;
> >>         import away3d.core.render.*;
> >>         import away3d.cameras.HoverCamera3D;
> >>         import away3d.events.MouseEvent3D;
> >>         import away3d.primitives.Sphere;
> >>
> >>         import away3d.tools.Drag3D;
> >>
> >>         public class Drag3DTest extends Sprite
> >>         {
> >>                 public var scene:Scene3D;
> >>                 private var view:View3D;
> >>                 private var drag3d:Drag3D;
> >>
> >>                 private var cameraDistance:Number = 3000;
> >>                 private var Hcamera:HoverCamera3D;
> >>
> >>                 private var move:Boolean = false;
> >>                 private var lastPanAngle:Number;
> >>                 private var lastTiltAngle:Number;
> >>                 private var lastMouseX:Number;
> >>                 private var lastMouseY:Number;
> >>
> >>                 public function Drag3DTest()
> >>                 {
> >>                         addEventListener(Event.ADDED_TO_STAGE, init);
> >>                 }
> >>
> >>                 private function init(e:Event):void
> >>                 {
> >>                         initSWFEnvironement();
> >>                         populate();
> >>                 }
> >>
> >>                  private function initSWFEnvironement():void
> >>                 {
> >>                         stage.align = StageAlign.TOP_LEFT;
> >>                         stage.scaleMode = StageScaleMode.NO_SCALE;
> >>                         stage.stageFocusRect = false;
> >>
> >>                         Hcamera = new HoverCamera3D();
> >>                         view = new View3D({camera:Hcamera});
> >>                         scene = view.scene;
> >>                         view.x = stage.stageWidth * .5;
> >>                         view.y = stage.stageHeight * .5;
> >>                         Hcamera.distance = cameraDistance;
> >>                         Hcamera.tiltAngle = Hcamera.panAngle = 45;
> >>
> >>                         addChild(view);
> >>                         //scene.addChild(new Trident(1000, true));
> >>
> >>                         start();
> >>                 }
> >>
> >>                 public function start():void
> >>                 {
> >>                         if(!hasEventListener(Event.ENTER_FRAME)){
> >>                                 addEventListener(Event.ENTER_FRAME, 
> >> refreshScreen);
> >>                                 
> >> stage.addEventListener(MouseEvent.MOUSE_DOWN, onMouseIsDown);
> >>                 stage.addEventListener(MouseEvent.MOUSE_UP, onMouseIsUp);
> >>                                 stage.addEventListener(Event.RESIZE, 
> >> onResize);
> >>                         }
> >>                 }
> >>
> >>                 private function populate():void
> >>                 {
> >>                         var _debugPrimitive:Sphere = new 
> >> Sphere({radius:50, material:null});
> >>                         scene.addChild(_debugPrimitive);
> >>
> >>                         drag3d = new Drag3D(view);
> >>                         drag3d.plane = "xz";
> >>                         drag3d.debug = true;
> >>                         drag3d.object3d = _debugPrimitive;
> >>
> >>                         Hcamera.hover(true);
> >>
> >>                 }
> >>
> >>                 private function refreshScreen(event:Event = null):void
> >>                 {
> >>
> >>                         if (move) {
> >>                                 Hcamera.panAngle = 0.7*(stage.mouseX - 
> >> lastMouseX) + lastPanAngle;
> >>                                 Hcamera.tiltAngle = 0.7*(stage.mouseY - 
> >> lastMouseY) + lastTiltAngle;
> >>                         }
> >>
> >>                         Hcamera.hover();
> >>
> >>                         drag3d.updateDrag();
> >>
> >>                         view.render();
> >>
> >>                 }
> >>
> >>                 private function onResize(event:Event):void
> >>                 {
> >>                         view.x = stage.stageWidth *.5;
> >>                         view.y = stage.stageHeight *.5;
> >>                 }
> >>
> >>                 private function onMouseIsDown(event:MouseEvent):void
> >>         {
> >>                                 lastPanAngle = Hcamera.panAngle;
> >>                                 lastTiltAngle = Hcamera.tiltAngle;
> >>                                 lastMouseX = stage.mouseX;
> >>                                 lastMouseY = stage.mouseY;
> >>                                 move = true;
> >>                                 stage.addEventListener(Event.MOUSE_LEAVE, 
> >> onStageMouseLeave);
> >>         }
> >>
> >>         private function onMouseIsUp(event:MouseEvent):void
> >>         {
> >>             move = false;
> >>             stage.removeEventListener(Event.MOUSE_LEAVE, 
> >> onStageMouseLeave);
> >>         }
> >>
> >>         private function onStageMouseLeave(event:Event):void
> >>         {
> >>             move = false;
> >>             stage.removeEventListener(Event.MOUSE_LEAVE, 
> >> onStageMouseLeave);
> >>         }
> >>
> >>         }
> >>
> >> }
> >>
> >> On Jun 1, 2010, at 1:08 AM, abowman wrote:
> >>
> >>> I tried calling the onResize function at the beginning of my init
> >>> function and that didn't solve the problem.
> >>
> >>> On May 31, 4:54 pm, Fabrice3D <[email protected]> wrote:
> >>>> looked very quickly at your code,
> >>>> since class caches few values to spare calcs, try call resize(); before 
> >>>> you do setup the class.
> >>
> >>>> let me know how it goes, I will in case it doesn't fix your issue, try 
> >>>> your class tomorrow.
> >>
> >>>> also one detail, camera is standard of type Camera3D
> >>>> so view.camera.x, y, z is enough, no need to declare one.
> >>
> >>>> Fabrice
> >>
> >>>> On May 31, 2010, at 6:09 PM, abowman wrote:
> >>
> >>>>> Thanks for the class Fabrice.
> >>
> >>>>> For some reason, when I move the mouse the sphere I'm dragging doesn't
> >>>>> stay under the mouse.
> >>
> >>>>> http://abowman.nozonenet.com/away3d/dragTest.swf
> >>>>> http://abowman.nozonenet.com/away3d/DragTest.as
> >>
> >>>>> What do I need to do to fix this?
> >>
> >>>>> Thanks
> >>
> >>>>> On May 21, 4:49 am, Fabrice3D <[email protected]> wrote:
> >>>>>> Hi all,
> >>>>>> I get many requests about this and I keep sending code...
> >>
> >>>>>> So I've added a new class dedicated to this particular functionality.
> >>>>>> Drag3D.  in tools.utils package
> >>
> >>>>>> you can use it to drag an object or just to get the intersection back.
> >>
> >>>>>> here an example of implementation
> >>
> >>>>>>                 import away3d.tools.utils.Drag3D
> >>>>>>                 [... usual away code...]
> >>>>>>                 private var drag3d:Drag3D;
> >>
> >>>>>>                  private function setUp():void
> >>>>>>                 {
> >>>>>>                         //the object you want to drag
> >>>>>>                         var _debugPrimitive:Sphere = new 
> >>>>>> Sphere({radius:50, material:null});
> >>>>>>                         this.scene.addChild(_debugPrimitive);
> >>
> >>>>>>                         //declare instance
> >>>>>>                         drag3d = new Drag3D(this.view);
> >>>>>>                         //which plane do you want to drag on
> >>>>>>                         // note here that plane != Plane primitive!!
> >>>>>>                         drag3d.plane = "xz";
> >>>>>>                         // in case you want to check what you are doing
> >>>>>>                         //drag3d.debug = true;
> >>>>>>                         // to assign an object to be dragged
> >>>>>>                         drag3d.object3d = _debugPrimitive;
> >>>>>>                 }
> >>
> >>>>>>                 private function myEnterFrame(event:Event = null):void
> >>>>>>                 {
> >>>>>>                         //will update the object automatically on 
> >>>>>> mouse moves
> >>>>>>                         drag3d.updateDrag();  // its is of course 
> >>>>>> handy to couple this with mouseEvents, like "if mouseisdown --> drag"
> >>
> >>>>>>                         // in case you want only the 
> >>>>>> positionintersectback
> >>>>>>                         varintersect:Number3D = drag3d.getIntersect();
> >>
> >>>>>>                         this.view.render();
> >>>>>>                 }
> >>
> >>>>>> next to 0,0,0 default, there are also options for custom positions of 
> >>>>>> plane, in case of AABB tests and even support for rotated planes
> >>>>>> if you want object aligned calcs...
> >>
> >>>>>> here a little tech demohttp://www.closier.nl/playground/drag/drag3d.swf
> >>
> >>>>>> cheers,
> >>
> >>>>>> Fabrice
> >>
> >>
> 
> 
> 
> 
> -- 
> Michael Ivanov ,Programmer
> Neurotech Solutions Ltd.
> Flex|Air |3D|Unity|
> www.neurotechresearch.com
> http://blog.alladvanced.net
> http://www.meetup.com/GO3D-Games-Opensource-3D/
> Tel:054-4962254
> [email protected]
> [email protected]
> 

Reply via email to