Пример #1
0
 virtual public bool DoneTransformation()
 {
     curChange.parentAfter      = GetLocalFrame(CoordSpace.SceneCoords);
     curChange.parentScaleAfter = GetLocalScale();
     if (target.IsTemporary)
     {
         curChange.after      = new List <Frame3f>();
         curChange.scaleAfter = new List <Vector3f>();
         foreach (TransformableSO so in curChange.childSOs)
         {
             curChange.after.Add(so.GetLocalFrame(CoordSpace.SceneCoords));
             curChange.scaleAfter.Add(UnityUtil.GetFreeLocalScale(so.RootGameObject));
         }
     }
     target.GetScene().History.PushChange(curChange, true);
     curChange = null;
     return(true);
 }
Пример #2
0
        /// <summary>
        /// Assuming dimensionIn is in space eFrom of fromSO, transform to eTo
        /// </summary>
        public static float TransformTo(float dimensionIn, TransformableSO fromSO, CoordSpace eFrom, CoordSpace eTo)
        {
            if (eFrom == eTo)
            {
                return(dimensionIn);
            }

            FScene scene = fromSO.GetScene();

            float sceneDim = dimensionIn;

            if (eFrom == CoordSpace.ObjectCoords)
            {
                // if we are in Object coords, we are either going up to Scene or World
                sceneDim = ObjectToScene(fromSO, dimensionIn);
            }
            else if (eFrom == CoordSpace.WorldCoords)
            {
                // if we are in World coords, we are going down to Scene or Object
                sceneDim = scene.ToSceneDimension(dimensionIn);
            } // (otherwise frameIn is in Scene coords)

            // going World->Scene or Object->Scene
            if (eTo == CoordSpace.SceneCoords)
            {
                return(sceneDim);
            }

            // going Scene->World or Object->World
            if (eTo == CoordSpace.WorldCoords)
            {
                return(scene.ToWorldDimension(sceneDim));
            }

            // only thing left is going from Scene to Object
            //return SceneToObject(fromSO, sceneDim);
            throw new NotImplementedException("SceneTransforms.TransformTo: transforming to object coordinates not supported yet");
        }
Пример #3
0
        /// <summary>
        /// Assuming frameIn is in space eFrom of fromSO, transform to eTo
        /// </summary>
        public static Frame3f TransformTo(Frame3f frameIn, TransformableSO fromSO, CoordSpace eFrom, CoordSpace eTo)
        {
            if (eFrom == eTo)
            {
                return(frameIn);
            }

            FScene scene = fromSO.GetScene();

            Frame3f sceneF = frameIn;

            if (eFrom == CoordSpace.ObjectCoords)
            {
                // if we are in Object coords, we are either going up to Scene or World
                sceneF = ObjectToScene(fromSO, frameIn);
            }
            else if (eFrom == CoordSpace.WorldCoords)
            {
                // if we are in World coords, we are going down to Scene or Object
                sceneF = scene.ToSceneFrame(frameIn);
            } // (otherwise frameIn is in Scene coords)

            // going World->Scene or Object->Scene
            if (eTo == CoordSpace.SceneCoords)
            {
                return(sceneF);
            }

            // going Scene->World or Object->World
            if (eTo == CoordSpace.WorldCoords)
            {
                return(scene.ToWorldFrame(sceneF));
            }

            // only thing left is going from Scene to Object
            return(SceneToObject(fromSO, sceneF));
        }
Пример #4
0
        public static GroupSO CreateGroupSO(TransformableSO so1, TransformableSO so2)
        {
            FScene scene = so1.GetScene();

            if (scene.IsSelected(so1))
            {
                scene.Deselect(so1);
            }
            if (scene.IsSelected(so2))
            {
                scene.Deselect(so2);
            }

            GroupSO group = new GroupSO();

            group.Create();

            scene.AddSceneObject(group);

            group.AddChild(so1);
            group.AddChild(so2);

            return(group);
        }
Пример #5
0
 public SOAddFrameLinkChangeOp(TransformableSO source, TransformableSO target) : base(false)
 {
     Scene      = source.GetScene();
     TargetUUID = target.UUID;
     SourceUUID = source.UUID;
 }