public void It_Should_Convert_Parameters_From_Multiple_Grouped_And_Delimitered_Values() { var parameters = ProjectionParams.FromValues(';', "A:abc,def;B:bcd;C(D:d,f,g;F:f)"); Assert.Equal(4, parameters.Count); Assert.Equal("A:abc,def", parameters[0]); Assert.Equal("B:bcd", parameters[1]); Assert.Equal("C.D:d,f,g", parameters[2]); Assert.Equal("C.F:f", parameters[3]); }
public void It_Should_Convert_Parameters_From_Multiple_Grouped_Values2() { var parameters = ProjectionParams.FromValues("object1(field1, object2(field1), field3)", "field2"); Assert.Equal(4, parameters.Count); Assert.Equal("object1.field1", parameters[0]); Assert.Equal("object1.object2.field1", parameters[1]); Assert.Equal("object1.field3", parameters[2]); Assert.Equal("field2", parameters[3]); }
/// <inheritdoc /> protected override float doScaling(Vector2 oldScreenPos1, Vector2 oldScreenPos2, Vector2 newScreenPos1, Vector2 newScreenPos2, ProjectionParams projectionParams) { var newVector = projectionParams.ProjectTo(newScreenPos2, TransformPlane) - projectionParams.ProjectTo(newScreenPos1, TransformPlane); var oldVector = projectionParams.ProjectTo(oldScreenPos2, TransformPlane) - projectionParams.ProjectTo(oldScreenPos1, TransformPlane); return(newVector.magnitude / oldVector.magnitude); }
public void It_Should_Create_Projection_Params_From_Object() { var parameters = ProjectionParams.FromValue(new List <object> { "field1", "field2", "field3" }); Assert.Equal(3, parameters.Count); Assert.Equal("field1", parameters[0]); Assert.Equal("field2", parameters[1]); Assert.Equal("field3", parameters[2]); }
public RouteBuilder AddProjectionParams(ProjectionParams projection) { if (projection == null) { return(this); } _queryParameters["projection"] = projection.ToString(); return(this); }
public void It_Should_Convert_Parameters_From_Multiple_Grouped_Values_And_Another_Delimiter() { var parameters = ProjectionParams.FromValues(';', "field1;object1(field1);object2(field1;field2);object3(field1);field2;field3"); Assert.Equal(7, parameters.Count); Assert.Equal("field1", parameters[0]); Assert.Equal("object1.field1", parameters[1]); Assert.Equal("object2.field1", parameters[2]); Assert.Equal("object2.field2", parameters[3]); Assert.Equal("object3.field1", parameters[4]); Assert.Equal("field2", parameters[5]); Assert.Equal("field3", parameters[6]); }
public void It_Should_Return_Projected_Fields_For_Object() { dynamic obj = CreateExpandoObject(); var projectionParams = ProjectionParams.FromValues("Id,Name"); dynamic result = projectionParams.FromObject(obj as ExpandoObject); Assert.Equal(obj.Id, result.Id); Assert.Equal(obj.Name, result.Name); AssertProperties(result, "Id", "Name"); }
public async Task TestGetByWrongIdAndProjection() { // arrange var dummy = await _persistence.CreateAsync(null, _dummy1); var projection = ProjectionParams.FromValues("inner_dummy.description", "content", "key"); // act dynamic result = await _persistence.GetOneByIdAsync(null, "wrong_id", projection); // assert Assert.Null(result); }
private float doRotation(Vector3 center, Vector2 oldScreenPos, Vector2 newScreenPos, ProjectionParams projectionParams) { var newVector = projectionParams.ProjectTo(newScreenPos, TransformPlane) - center; var oldVector = projectionParams.ProjectTo(oldScreenPos, TransformPlane) - center; var angle = Vector3.Angle(oldVector, newVector); if (Vector3.Dot(Vector3.Cross(oldVector, newVector), TransformPlane.normal) < 0) { angle = -angle; } return(angle); }
// Pointers pressed this frame protected override void pointersPressed(IList <Pointer> pointers) { if (State == GestureState.Idle) { primaryPointer = pointers[0]; projection = primaryPointer.GetPressData().Layer.GetProjectionParams(primaryPointer); plane = new Plane(Vector3.up, transform.position); startPosition = projection.ProjectTo(primaryPointer.Position, plane); // Start the gesture setState(GestureState.Began); } }
public async Task TestGetByIdAndWrongProjection() { // arrange var dummy = await _persistence.CreateAsync(null, _dummy1); var projection = ProjectionParams.FromValues("Wrong_Key", "Wrong_Content"); // act dynamic result = await _persistence.GetOneByIdAsync(null, dummy.Id, projection); // assert Assert.Null(result); }
protected Vector3 projectScaledRotated(Vector2 point, float dR, float dS, ProjectionParams projectionParams) { var delta = projectionParams.ProjectTo(point, transformPlane) - cachedTransform.position; if (dR != 0) { delta = Quaternion.AngleAxis(dR, RotationAxis) * delta; } if (dS != 0) { delta = delta * dS; } return(cachedTransform.position + delta); }
public async Task TestGetByIdAndIdProjection() { // arrange var dummy = await _persistence.CreateAsync(null, _dummy1); var projection = ProjectionParams.FromValues("id"); // act dynamic result = await _persistence.GetOneByIdAsync(null, dummy.Id, projection); // assert Assert.NotNull(result); Assert.Equal(dummy.Id, result.id); }
/// <inheritdoc /> protected override float doRotation(Vector2 oldScreenPos1, Vector2 oldScreenPos2, Vector2 newScreenPos1, Vector2 newScreenPos2, ProjectionParams projectionParams) { var newVector = projectionParams.ProjectTo(newScreenPos2, TransformPlane) - projectionParams.ProjectTo(newScreenPos1, TransformPlane); var oldVector = projectionParams.ProjectTo(oldScreenPos2, TransformPlane) - projectionParams.ProjectTo(oldScreenPos1, TransformPlane); var angle = Vector3.Angle(oldVector, newVector); if (Vector3.Dot(Vector3.Cross(oldVector, newVector), TransformPlane.normal) < 0) { angle = -angle; } return(angle); }
public async Task TestGetByIdAndProjectionFromArray() { // arrange var dummy = await _persistence.CreateAsync(null, _dummy1); var projection = ProjectionParams.FromValues("key", "inner_dummies(name, description)"); // act dynamic result = await _persistence.GetOneByIdAsync(null, dummy.Id, projection); // assert Assert.NotNull(result); Assert.Equal(dummy.Key, result.key); Assert.Equal(dummy.InnerDummies[0].Name, result.inner_dummies[0].name); Assert.Equal(dummy.InnerDummies[1].Description, result.inner_dummies[1].description); }
public void It_Should_Return_Projected_Fields_For_Object_With_Nested_Properties() { dynamic obj = CreateExpandoObject(); var projectionParams = ProjectionParams.FromValues("Id,Description,Data(Id,Amount)"); dynamic result = projectionParams.FromObject(obj as ExpandoObject); Assert.Equal(obj.Id, result.Id); Assert.Equal(obj.Description, result.Description); Assert.Equal(obj.Data.Id, result.Data.Id); Assert.Equal(obj.Data.Amount, result.Data.Amount); AssertProperties(result, "Id", "Description", "Data"); AssertProperties(result.Data, "Id", "Amount"); }
/// <inheritdoc /> protected override Vector3 doOnePointTranslation(Vector2 oldScreenPos, Vector2 newScreenPos, ProjectionParams projectionParams) { if (isTransforming) { return(new Vector3(newScreenPos.x - oldScreenPos.x, newScreenPos.y - oldScreenPos.y, 0)); } screenPixelTranslationBuffer += newScreenPos - oldScreenPos; if (screenPixelTranslationBuffer.sqrMagnitude > screenTransformPixelThresholdSquared) { isTransforming = true; return(screenPixelTranslationBuffer); } return(Vector3.zero); }
public async Task TestGetByIdAndProjection() { // arrange var dummy = await _persistence.CreateAsync(null, _dummy1); var projection = ProjectionParams.FromValues("inner_dummy.description", "content", "key", "create_time_utc", "dummy_type"); // act dynamic result = await _persistence.GetOneByIdAsync(null, dummy.Id, projection); // assert Assert.NotNull(result); Assert.Equal(dummy.Key, result.key); Assert.Equal(dummy.Content, result.content); Assert.Equal(dummy.InnerDummy.Description, result.inner_dummy.description); Assert.Equal(dummy.CreateTimeUtc.ToString(), result.create_time_utc.ToString()); Assert.Equal(dummy.DummyType.ToString(), result.dummy_type.ToString()); }
public async Task TestGetPageByWrongProjection() { // arrange var dummy1 = await _persistence.CreateAsync(null, _dummy1); var dummy2 = await _persistence.CreateAsync(null, _dummy2); var builder = Builders <Dummy> .Filter; var filter = builder.Empty; var projection = ProjectionParams.FromValues("Wrong_InnerDummy.Description", "Wrong_Content", "Wrong_Key"); // act dynamic result = await _persistence.GetPageByFilterAndProjectionAsync(null, filter, null, null, projection); // assert Assert.NotNull(result); Assert.Empty(result.Data); }
/// <inheritdoc /> protected override Vector3 doOnePointTranslation(Vector2 oldScreenPos, Vector2 newScreenPos, ProjectionParams projectionParams) { if (isTransforming) { return(projectionParams.ProjectTo(newScreenPos, TransformPlane) - projectionParams.ProjectTo(oldScreenPos, TransformPlane)); } screenPixelTranslationBuffer += newScreenPos - oldScreenPos; if (screenPixelTranslationBuffer.sqrMagnitude > screenTransformPixelThresholdSquared) { isTransforming = true; return(projectionParams.ProjectTo(newScreenPos, TransformPlane) - projectionParams.ProjectTo(newScreenPos - screenPixelTranslationBuffer, TransformPlane)); } return(Vector3.zero); }
/// <inheritdoc /> protected override void touchBegan(TouchPoint touch) { base.touchBegan(touch); if (activeTouches.Count == 1) { projectionParams = activeTouches[0].ProjectionParams; } if (touchesNumState == TouchesNumState.PassedMaxThreshold || touchesNumState == TouchesNumState.PassedMinMaxThreshold) { switch (State) { case GestureState.Began: case GestureState.Changed: setState(GestureState.Ended); break; } } }
/// <summary> /// Calculated two finger translation with respect to rotation and scaling. /// </summary> /// <param name="oldScreenPos1"> Finger one old screen position. </param> /// <param name="oldScreenPos2"> Finger two old screen position. </param> /// <param name="newScreenPos1"> Finger one new screen position. </param> /// <param name="newScreenPos2"> Finger two new screen position. </param> /// <param name="dR"> Calculated delta rotation. </param> /// <param name="dS"> Calculated delta scaling. </param> /// <param name="projectionParams"> Layer projection parameters. </param> /// <returns> Delta translation vector. </returns> protected virtual Vector3 doTwoPointTranslation(Vector2 oldScreenPos1, Vector2 oldScreenPos2, Vector2 newScreenPos1, Vector2 newScreenPos2, float dR, float dS, ProjectionParams projectionParams) { return(Vector3.zero); }
/// <summary> /// Calculates single finger translation. /// </summary> /// <param name="oldScreenPos"> Finger old screen position. </param> /// <param name="newScreenPos"> Finger new screen position. </param> /// <param name="projectionParams"> Layer projection parameters. </param> /// <returns> Delta translation vector. </returns> protected virtual Vector3 doOnePointTranslation(Vector2 oldScreenPos, Vector2 newScreenPos, ProjectionParams projectionParams) { return(Vector3.zero); }
/// <summary> /// Calculates scaling. /// </summary> /// <param name="oldScreenPos1"> Finger one old screen position. </param> /// <param name="oldScreenPos2"> Finger two old screen position. </param> /// <param name="newScreenPos1"> Finger one new screen position. </param> /// <param name="newScreenPos2"> Finger two new screen position. </param> /// <param name="projectionParams"> Layer projection parameters. </param> /// <returns> Multiplicative delta scaling. </returns> protected virtual float doScaling(Vector2 oldScreenPos1, Vector2 oldScreenPos2, Vector2 newScreenPos1, Vector2 newScreenPos2, ProjectionParams projectionParams) { return(1); }
/// <summary> /// Calculates rotation. /// </summary> /// <param name="oldScreenPos1"> Finger one old screen position. </param> /// <param name="oldScreenPos2"> Finger two old screen position. </param> /// <param name="newScreenPos1"> Finger one new screen position. </param> /// <param name="newScreenPos2"> Finger two new screen position. </param> /// <param name="projectionParams"> Layer projection parameters. </param> /// <returns> Angle in degrees. </returns> protected virtual float doRotation(Vector2 oldScreenPos1, Vector2 oldScreenPos2, Vector2 newScreenPos1, Vector2 newScreenPos2, ProjectionParams projectionParams) { return(0); }
/// <inheritdoc /> protected override Vector3 doTwoPointTranslation(Vector2 oldScreenPos1, Vector2 oldScreenPos2, Vector2 newScreenPos1, Vector2 newScreenPos2, float dR, float dS, ProjectionParams projectionParams) { if (isTransforming) { return(projectionParams.ProjectTo(newScreenPos1, TransformPlane) - projectScaledRotated(oldScreenPos1, dR, dS, projectionParams)); } screenPixelTranslationBuffer += newScreenPos1 - oldScreenPos1; if (screenPixelTranslationBuffer.sqrMagnitude > screenTransformPixelThresholdSquared) { isTransforming = true; return(projectionParams.ProjectTo(newScreenPos1, TransformPlane) - projectScaledRotated(newScreenPos1 - screenPixelTranslationBuffer, dR, dS, projectionParams)); } return(Vector3.zero); }
/// <inheritdoc /> protected override float doScaling(Vector2 oldScreenPos1, Vector2 oldScreenPos2, Vector2 newScreenPos1, Vector2 newScreenPos2, ProjectionParams projectionParams) { return((newScreenPos2 - newScreenPos1).magnitude / (oldScreenPos2 - oldScreenPos1).magnitude); }
public virtual async Task <object> GetByIdAsync(string correlationId, string id, ProjectionParams projection) { projection = projection ?? new ProjectionParams(); T obj = null; lock (_lock) { _objects.TryGetValue(id, out obj); } if (obj != null) { if (projection.Count == 0) { return(await Task.FromResult(obj)); } dynamic customObject = new ExpandoObject(); var customObjectMap = customObject as IDictionary <string, object>; foreach (var projectionField in projection) { customObjectMap = GetCustomObjectMap(obj, customObjectMap, projectionField); } if (customObjectMap.Count > 0) { return(await Task.FromResult(customObject)); } } return(null); }
public virtual async Task <DataPage <object> > GetAsync(string correlationId, FilterParams filter, PagingParams paging, ProjectionParams projection) { projection = projection ?? new ProjectionParams(); var objectsResult = await GetAsync(correlationId, filter, paging); var result = new DataPage <object>() { Data = new List <object>(), Total = objectsResult.Total }; foreach (var order in objectsResult.Data) { if (projection.Count == 0) { result.Data.Add(order); } else { dynamic customObject = new ExpandoObject(); var customObjectMap = customObject as IDictionary <string, object>; foreach (var projectionField in projection) { customObjectMap = GetCustomObjectMap(order, customObjectMap, projectionField); } if (customObjectMap.Count > 0) { result.Data.Add(customObject); } } } return(result); }
/// <inheritdoc /> protected override Vector3 doTwoPointTranslation(Vector2 oldScreenPos1, Vector2 oldScreenPos2, Vector2 newScreenPos1, Vector2 newScreenPos2, float dR, float dS, ProjectionParams projectionParams) { if (isTransforming) { var transformedPoint = scaleAndRotate(oldScreenPos1, (oldScreenPos1 + oldScreenPos2) * .5f, dR, dS); return(new Vector3(newScreenPos1.x - transformedPoint.x, newScreenPos1.y - transformedPoint.y, 0)); } screenPixelTranslationBuffer += newScreenPos1 - oldScreenPos1; if (screenPixelTranslationBuffer.sqrMagnitude > screenTransformPixelThresholdSquared) { isTransforming = true; oldScreenPos1 = newScreenPos1 - screenPixelTranslationBuffer; var transformedPoint = scaleAndRotate(oldScreenPos1, (oldScreenPos1 + oldScreenPos2) * .5f, dR, dS); return(new Vector3(newScreenPos1.x - transformedPoint.x, newScreenPos1.y - transformedPoint.y, 0)); } return(Vector3.zero); }