public async Task <IEnumerable <string> > Get() { try { var solidAgent = new SolidAgent(AccessToken, WebId, "https://localhost:5001"); var content = await solidAgent.GetAccounts(); RequestHeaders header = Request.GetTypedHeaders(); Uri uriReferer = header.Referer; return(new List <string>() { "hello", "world", content }); } catch (Exception exc) { throw; } }
public void CollideWithSolid(Entity solidAgentEntity, Entity solidEntity, ref RigidBody solidAgentRigidBody, ref RigidBody solidRigidBody) { Translation solidAgentTranslation = TranslationGroup[solidAgentEntity]; Rotation solidAgentRotation = RotationGroup[solidAgentEntity]; Translation solidTranslation = TranslationGroup[solidEntity]; Rotation solidRotation = RotationGroup[solidEntity]; //The solid agent is guaranteed to be a solid agent. //We assume anything the solid agent collides with is a solid. //Triggers, for example, will not be triggered here - only collisions happen here BoxCollider *solidBoxCollider = (BoxCollider *)solidRigidBody.Collider; //Flatten out the translation, since the rigid body caster seems bugged? //TODO check into this with later updates to UnityPhysics BoxCollider *updatedBoxCollider = (BoxCollider *)BoxCollider.Create( new BoxGeometry { BevelRadius = solidBoxCollider->BevelRadius, Center = solidBoxCollider->Center + solidTranslation.Value, Orientation = solidRotation.Value, Size = solidBoxCollider->Size }, solidBoxCollider->Filter, solidBoxCollider->Material).GetUnsafePtr(); RigidBody updatedSolidRigidBody = new RigidBody { CustomTags = solidRigidBody.CustomTags, Collider = (Collider *)updatedBoxCollider, Entity = solidRigidBody.Entity, WorldFromBody = new RigidTransform(quaternion.identity, float3.zero) }; //Collision Check ColliderCastInput colliderCastInput = new ColliderCastInput { Collider = solidAgentRigidBody.Collider, Start = solidAgentTranslation.Value, End = solidAgentTranslation.Value, Orientation = solidAgentRotation.Value }; ColliderCastHit colliderCastHit; bool isSolidAgentCollided = updatedSolidRigidBody.CastCollider(colliderCastInput, out colliderCastHit); if (isSolidAgentCollided) { bool isGroundCollided = false; bool isCeilingCollided = false; bool isLeftWallCollided = false; bool isRightWallCollided = false; if (colliderCastHit.SurfaceNormal.y >= SurfaceNormalEdgeThreshold) { isGroundCollided = true; } else if (colliderCastHit.SurfaceNormal.y <= -SurfaceNormalEdgeThreshold) { isCeilingCollided = true; } else if (colliderCastHit.SurfaceNormal.x >= SurfaceNormalEdgeThreshold) { isLeftWallCollided = true; } else if (colliderCastHit.SurfaceNormal.x <= -SurfaceNormalEdgeThreshold) { isRightWallCollided = true; } if (isGroundCollided || isCeilingCollided || isLeftWallCollided || isRightWallCollided) { SolidAgent solidAgent = SolidAgentGroup[solidAgentEntity]; if (isGroundCollided) { solidAgent.IsGroundCollided = true; solidAgent.GroundSurfaceNormal = colliderCastHit.SurfaceNormal.y; } if (isCeilingCollided) { solidAgent.IsCeilingCollided = true; solidAgent.CeilingSurfaceNormal = colliderCastHit.SurfaceNormal.y; } if (isLeftWallCollided) { solidAgent.IsLeftWallCollided = true; solidAgent.LeftWallSurfaceNormal = colliderCastHit.SurfaceNormal.x; } if (isRightWallCollided) { solidAgent.IsRightWallCollided = true; solidAgent.RightWallSurfaceNormal = colliderCastHit.SurfaceNormal.x; } SolidAgentGroup[solidAgentEntity] = solidAgent; } } }