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); }
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); }
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); }
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; }
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); }