public static DistanceField WalkJson(JToken node) { DistanceField res = null; switch (node.Value <string>("Type")) { case "Sphere": res = ReadSphere(node); break; case "Union": res = ReadUnion(node); break; case "Plane": res = ReadPlane(node); break; case "Repitition": res = ReadRepetition(node); break; case "Substraction": res = ReadSubstraction(node); break; case "Intersection": res = ReadIntersection(node); break; default: throw new Exception("Can't find a Type field. It's terrible. Suffer"); } var material = node.Value <JObject>("Material"); if (material != null) { res = new MaterialChange(res, ReadMaterial(material)); } var position = node.Value <JObject>("Position"); if (position != null) { res = new Translation(res, ReadVec3(position)); } return(res); }
public Translation(DistanceField field, Vec3 amount) { Field = field; Amount = amount; }
public Subtraction(DistanceField first, DistanceField second) { First = first; Second = second; }
public Intersection(DistanceField first, DistanceField second) { First = first; Second = second; }
public Repitition(DistanceField field, Vec3 distance) { Field = field; Distance = distance; }
public Union(DistanceField first, DistanceField second) { First = first; Second = second; }