found two more places where break; misses...
And it seems that only "xz" mode works well.

On Fri, Jul 23, 2010 at 5:48 PM, Fabrice3D <[email protected]> wrote:

> 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]
>
>
>


-- 
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