/// <summary> /// Checks if position of entity has changed and sets y attribute to ground level if y and ground level /// are different /// </summary> /// <param name="accumulatedTransforms">Accumulated transformation that happened in the service chain</param> /// <returns>Accumulated changes with adaptions added by AvatarCollison</returns> internal AccumulatedAttributeTransform Transform(AccumulatedAttributeTransform accumulatedTransforms) { if (!accumulatedTransforms.Entity.ContainsComponent("avatar")) return accumulatedTransforms; Vector entityPosition = (Vector)accumulatedTransforms.CurrentAttributeValue("location", "position"); Vector adaptedPosition = new Vector (entityPosition.x, (float)accumulatedTransforms.Entity["avatarCollision"]["groundLevel"].Value, entityPosition.z); accumulatedTransforms.AddAttributeTransformation("location", "position", adaptedPosition); return accumulatedTransforms; }