Beispiel #1
0
 void XYMoveRectangleTool()
 {
     foreach (var iso_world in _viewCenters.Keys.ToList())
     {
         EditorGUI.BeginChangeCheck();
         var old_center = _viewCenters[iso_world];
         var new_center = IsoEditorUtils.GizmoRectangle(old_center);
         if (EditorGUI.EndChangeCheck())
         {
             Undo.RecordObjects(
                 _isoParents[iso_world].Select(p => p.transform).ToArray(),
                 _isoParents[iso_world].Count > 1 ? "Move IsoParents" : "Move IsoParent");
             var old_delta = new_center - old_center;
             var new_delta = iso_world.IsoToScreen(IsoEditorUtils.XYMoveIsoObjects(
                                                       false,
                                                       iso_world,
                                                       _isoObjects,
                                                       _otherObjects,
                                                       iso_world.ScreenToIso(old_delta)));
             _viewCenters[iso_world] = old_center + IsoUtils.Vec3FromVec2(new_delta);
             foreach (var parent in _isoParents[iso_world])
             {
                 parent.transform.position += IsoUtils.Vec3FromVec2(new_delta);
             }
             foreach (var iso_object in _isoObjects[iso_world])
             {
                 iso_object.FixIsoPosition();
                 iso_object.positionXY = IsoUtils.VectorBeautifier(iso_object.positionXY);
             }
         }
     }
 }
Beispiel #2
0
        void PlaceIsoObject(IsoObject iso_object, float depth)
        {
            var iso_internal = iso_object.Internal;
            var old_position = iso_internal.Transform.position;

            iso_internal.Transform.position =
                IsoUtils.Vec3FromVec2(old_position, depth);
        }
Beispiel #3
0
		void GrabPositions() {
			var iso_world = GameObject.FindObjectOfType<IsoWorld>();
			if ( iso_world ) {
				_positions = targets
					.Where(p => p as IsoObject)
					.Select(p => p as IsoObject)
					.ToDictionary(p => p, p => p.transform.position);
				_iso_zpositions = targets
					.Where(p => p as IsoObject)
					.Select(p => p as IsoObject)
					.ToDictionary(p => p, p => p.position.z);
				_center = _viewCenter = _positions.Aggregate(Vector3.zero, (AccIn, p) => {
					return AccIn + IsoUtils.Vec3FromVec2(iso_world.IsoToScreen(p.Key.position + p.Key.size * 0.5f));
				}) / _positions.Count;
			}
		}
Beispiel #4
0
 void XYMoveRectangleTool()
 {
     foreach (var iso_world in _viewCenters.Keys.ToList())
     {
         EditorGUI.BeginChangeCheck();
         var old_center = _viewCenters[iso_world];
         var new_center = IsoEditorUtils.GizmoRectangle(old_center);
         if (EditorGUI.EndChangeCheck())
         {
             var old_delta = new_center - old_center;
             var new_delta = iso_world.IsoToScreen(IsoEditorUtils.XYMoveIsoObjects(
                                                       true,
                                                       iso_world,
                                                       _isoObjects,
                                                       _otherObjects,
                                                       iso_world.ScreenToIso(old_delta)));
             _viewCenters[iso_world] = old_center + IsoUtils.Vec3FromVec2(new_delta);
         }
     }
 }
Beispiel #5
0
        // ---------------------------------------------------------------------
        //
        //
        //
        // ---------------------------------------------------------------------

        void PrepareTargets()
        {
            _isoObjects = targets
                          .OfType <IsoObject>()
                          .Where(p => p.isoWorld)
                          .GroupBy(p => p.isoWorld)
                          .ToDictionary(p => p.Key, p => p.ToList());
            _viewCenters = _isoObjects.ToDictionary(
                pair => pair.Key,
                pair => {
                var iso_world = pair.Key;
                return(pair.Value.Aggregate(Vector3.zero, (AccIn, p) => {
                    return AccIn + IsoUtils.Vec3FromVec2(
                        iso_world.IsoToScreen(p.position + p.size * 0.5f));
                }) / pair.Value.Count);
            });
            _otherObjects = FindObjectsOfType <IsoObject>()
                            .Where(p => p.IsActive() && p.isoWorld)
                            .Where(p => _isoObjects.ContainsKey(p.isoWorld))
                            .Where(p => !_isoObjects[p.isoWorld].Contains(p))
                            .GroupBy(p => p.isoWorld)
                            .ToDictionary(p => p.Key, p => p.ToList());
        }