Пример #1
0
        public Coordinate AddNewMueCoordinateWithParameterReference(Parameter parameterReference,
                                                                    bool pointsInNegativeDirection, bool asPreview)
        {
            var newCoordinate =
                new Mue(parameterReference, pointsInNegativeDirection, OnCoordinateDeleted,
                        OnCoordinateChanged, asPreview, Anchor.PrimaryCoordinate);

            Coordinates.Add(newCoordinate);
            return(newCoordinate);
        }
Пример #2
0
        public Coordinate AddNewMueCoordinateWithParameterValue(float parameterValue, bool pointsInNegativeDirection,
                                                                bool asPreview)
        {
            Debug.Log($"{parameterValue} , {pointsInNegativeDirection}");
            var newCoordinate = new Mue(
                parameterValue,
                pointsInNegativeDirection,
                OnCoordinateDeleted,
                OnCoordinateChanged,
                asPreview,
                Anchor.PrimaryCoordinate
                );

            Coordinates.Add(newCoordinate);
            return(newCoordinate);
        }
Пример #3
0
        public Coordinate AddNewMueCoordinate(float position, bool asPreview)
        {
            var delta = position - Anchor.PrimaryCoordinate.Value;
            var pointsInNegativeDirection = delta < 0f;

            if (pointsInNegativeDirection)
            {
                delta *= -1f;
            }

            var newCoordinate = new Mue(
                delta,
                pointsInNegativeDirection,
                OnCoordinateDeleted,
                OnCoordinateChanged,
                asPreview,
                Anchor.PrimaryCoordinate
                );

            Coordinates.Add(newCoordinate);
            return(newCoordinate);
        }
Пример #4
0
        public void SetSerializableType(SerializableAxis serializableAxis, List <Parameter> parameters)
        {
            // Generate all coordinates
            // The origin is always the coordinate with index = 0;
            var coordinates = new List <Coordinate>();

            var o      = serializableAxis.Origin;
            var origin = new Origin(
                o.ID,
//                parameters.First(p => p.ID == serializableAxis.Origin.ParameterID),
                o.OriginPosition
                );

            Anchor.ResetPrimaryCoordinate();
            Anchor.ResetSecondaryCoordinate();

            coordinates.Add(origin);

            var mues    = serializableAxis.Mues;
            var lambdas = serializableAxis.Lambdas;

            var coordinateCount = mues.Count + lambdas.Count + 1;

            for (var i = 1; i < coordinateCount; i++)
            {
                if (mues.Any(c => c.Index == i))
                {
                    var mue           = mues.First(m => m.Index == i);
                    var newCoordinate = new Mue(
                        mue.ID,
                        parameters.First(p => p.ID == mue.ParameterID),
                        mue.PointsInNegativeDirection,
                        OnCoordinateDeleted,
                        OnCoordinateChanged,
                        false);
                    coordinates.Add(newCoordinate);
                    continue;
                }

                if (lambdas.Any(l => l.Index == i))
                {
                    var lambda        = lambdas.First(l => l.Index == i);
                    var newCoordinate = new Lambda(
                        lambda.ID,
                        0.5f, // todo: make lambdas have parameter references; parameters.First(p=>p.ID == lambda.ParameterID),
                        OnCoordinateDeleted,
                        OnCoordinateChanged,
                        false
                        );
                    coordinates.Add(newCoordinate);
                    continue;
                }
                Debug.LogError($"Could not find any serialized Coordinate with index {i}.");
            }

            //set parents
            foreach (var mSerial in mues)
            {
                var mue = coordinates[mSerial.Index];


                if (!coordinates.Any(c => c.ID == mSerial.ParentID))
                {
                    Debug.Log($"Search for {mSerial.ParentID} in {coordinates.Count} coordinates");
                }

//                var parent =
                mue.SetParents(new List <Coordinate>()
                {
                    coordinates.First(c => c.ID == mSerial.ParentID)
                });
            }

            foreach (var lSerial in lambdas)
            {
                var lambda = coordinates[lSerial.Index];
                var p0     = coordinates.First(c => c.ID == lSerial.ParentIDs[0]);
                var p1     = coordinates.First(c => c.ID == lSerial.ParentIDs[1]);
                lambda.SetParents(new List <Coordinate>()
                {
                    p0, p1
                });
            }

            Coordinates = coordinates;
        }
Пример #5
0
    public void UpdateUI(
        Mue coordinate,
        CoordinateUI.LayoutInfo layoutInfo,
        Vector3 direction,
        float padding,
        float gap,
        CoordinateUIStyle.MueUIStyle style,
        bool hasKeyboardInputSelection,
        bool isReferencesByOtherParameter,
        Coordinate draggedCoordinate, bool showGridLine
        )
    {
        SketchStyle.State state;

        if (coordinate.IsCurrentlyDrawn && hasKeyboardInputSelection || draggedCoordinate == coordinate)
        {
            state = SketchStyle.State.DraggedOrExplicitInput;
        }
        else if (isReferencesByOtherParameter || draggedCoordinate?.Parameter == coordinate.Parameter)
        {
            state = SketchStyle.State.HasParameterReference;
        }
        else if (coordinate.IsCurrentlyDrawn && !hasKeyboardInputSelection)
        {
            state = SketchStyle.State.Drawing;
        }
        else if (draggedCoordinate != null)
        {
            state = SketchStyle.State.OtherIsDragged;
        }
        else
        {
            state = SketchStyle.State.Default;
        }

        _coordinate = coordinate;
        var labelString = coordinate.Parameter.Value.ToString("F");

        gameObject.name = $"Mue2D:{labelString}";

        var offset = layoutInfo.OrthogonalDirection * (layoutInfo.OrthogonalAnchor + layoutInfo.Index * gap - padding);
        var coordinateUIPositionWorld       = direction * coordinate.Value + offset;
        var parentCoordinateUIPositionWorld = direction * coordinate.ParentValue + offset;
        var directionWorld = coordinateUIPositionWorld - parentCoordinateUIPositionWorld;
        var labelPosition  = (coordinateUIPositionWorld + parentCoordinateUIPositionWorld) * 0.5f;

        _gridLineUI.UpdateUI(coordinateUIPositionWorld, layoutInfo.OrthogonalDirection, style.GridLineStyle, showGridLine);

        _targetGizmo.UpdateUI(coordinateUIPositionWorld, directionWorld, style.CoordinateGizmoStyle, style.Colors,
                              state,
                              CoordinateGizmoUI.Type.Arrow);

        _parentGizmo.UpdateUI(parentCoordinateUIPositionWorld, directionWorld, style.CoordinateGizmoStyle, style.Colors,
                              state,
                              CoordinateGizmoUI.Type.Mark);

        _coordinateDimensionLineUI.UpdateUI(coordinateUIPositionWorld, parentCoordinateUIPositionWorld,
                                            style.DimensionLineStyle, style.Colors, state);

        _coordinateLabelUI.UpdateUI(labelString, labelPosition, style.LabelStyle, style.Colors, state);
    }