typeof IVecCam1=I;; typeof IVecCam2=I;; typeof IVecCam3=I;; typeof IAngCam1=I;; typeof IAngCam2=I;; typeof IAngCam3=I;; typeof PositionCam = ObjText;; fun UpdatePosCam(btn, win) = let M3calcPosRef w3d.V3dsession w3d.V3dcamera shell ->[v m] in let M3angularFromMatrix m ->ang in let v -> [x y z] in let ang -> [a b c] in ( set IVecCam1=x; set IVecCam2=y; set IVecCam3=z; set IAngCam1=a; set IAngCam2=b; set IAngCam3=c; _SETtext PositionCam strcatn "("::(itoa x)::","::(itoa y)::","::(itoa z)::")"::nil ) ;; fun closeedit() = strbuild ("DistX"::(itoa 350)::nil):: ("DistY"::(itoa 350)::nil):: ("Width"::(itoa 200)::nil):: ("Height"::(itoa 150)::nil):: ("ClippingDist"::(itoa 20)::nil):: ("FogDist"::(itoa 80000)::nil):: ("Faraway"::(itoa 130000)::nil):: ("a"::"auto"::nil):: ("Path"::"nocapture"::nil):: ("VecCam1"::(itoa IVecCam1)::nil):: ("VecCam2"::(itoa IVecCam2)::nil):: ("VecCam3"::(itoa IVecCam3)::nil):: ("AngCam1"::(itoa IAngCam1)::nil):: ("AngCam2"::(itoa IAngCam2)::nil):: ("AngCam3"::(itoa IAngCam3)::nil):: ("posCam"::(strcatn "("::(itoa IVecCam1)::","::(itoa IVecCam2)::","::(itoa IVecCam3)::")"::nil)::nil):: ("registeredClientsOnly"::"no"::nil):: nil ;; fun dynamicedit(win, obj, mat, param) = let strextr param -> l in let _GETwindowSizePosition win -> [w h x y] in ( _CRtext _channel win 5 32 210 20 ET_ALIGN_LEFT _loc this "CAM_SELECTION" nil ; let _CRbutton _channel win 220 32 100 20 PB_DEFAULT _loc this "CAM_POSITION" nil -> Button in _CBbutton Button @UpdatePosCam win; set PositionCam = _CRtext _channel win 330 32 180 20 ET_ALIGN_LEFT let getInfo l "posCam" -> string in if (nil == string) then _loc this "CAM_AUCUNE" nil else string; _CRtext _channel win 5 160 800 120 ET_ALIGN_LEFT _loc this "CAM_EXPLICATION" nil ; /*_CRtext _channel win 5 180 800 20 ET_ALIGN_LEFT _loc this "CAM_PARAM" nil ;*/ ); @closeedit ;;