Пример #1
0
        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);
        }
Пример #2
0
 public Translation(DistanceField field, Vec3 amount)
 {
     Field  = field;
     Amount = amount;
 }
Пример #3
0
 public Subtraction(DistanceField first, DistanceField second)
 {
     First  = first;
     Second = second;
 }
Пример #4
0
 public Intersection(DistanceField first, DistanceField second)
 {
     First  = first;
     Second = second;
 }
Пример #5
0
 public Repitition(DistanceField field, Vec3 distance)
 {
     Field    = field;
     Distance = distance;
 }
Пример #6
0
 public Union(DistanceField first, DistanceField second)
 {
     First  = first;
     Second = second;
 }