Esempio n. 1
0
    private void SendToAll(string csv, Reflective data)
    {
        if (!__debugInitialized) SetupSimple();
        if (string.IsNullOrWhiteSpace(csv)) return;

        Action<string, Reflective> sendAction;
        if (__sendActions.TryGetValue(csv, out sendAction))
        {
            sendAction(csv, data);
            return;
        }

        // Simple case.
        if (!csv.Contains(">>"))
        {
            __sendActions[csv] = SendToAllInternal;
            SendToAllInternal(csv, data);
            return;
        }

        // Chaining
        System.Collections.Generic.List<string> chainedCommands = new System.Collections.Generic.List<string>(csv.Split(new string[] { ">>" }, StringSplitOptions.RemoveEmptyEntries));
        __sendActions[csv] = (_csv, _data) =>
        {
            string first = chainedCommands[0];
            chainedCommands.RemoveAt(0);
            chainedCommands.Add(first);

            Log.Write(LogLevel.Info, "CHAIN Sending to " + first);
            SendToAllInternal(first, _data);
        };
        __sendActions[csv](csv, data);
    }
Esempio n. 2
0
    private void SendToAllInternal(string csv, Reflective data)
    {
        if (string.IsNullOrWhiteSpace(csv)) return;
        string[] events = csv.Trim().Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);

        if (__SimpleDebugging) Log.Write(LogLevel.Info, __SimpleTag, "Sending " + events.Length + " events: " + string.Join(", ", events) + (Group != "" ? (" to group " + Group) : ""));
        foreach (string eventName in events)
        {
            PostScriptEvent(GenerateEventName(eventName), data);
        }
    }
Esempio n. 3
0
        internal void SendToAll(Reflective data)
        {
            Next();

            ThisScript.SimpleLog(LogLevel.Info, "Sending " + Current.Events.Length + " events: " + string.Join(", ", Current.Events));

            foreach (string eventName in Current.Events)
            {
                ThisScript.PostSimpleEvent(eventName, data);
            }
        }
Esempio n. 4
0
 public override int GetHashCode()
 {
     unchecked
     {
         var hashCode = (Pattern != null ? Pattern.GetHashCode() : 0);
         hashCode = (hashCode * 397) ^ Ambient.GetHashCode();
         hashCode = (hashCode * 397) ^ Diffuse.GetHashCode();
         hashCode = (hashCode * 397) ^ Specular.GetHashCode();
         hashCode = (hashCode * 397) ^ Reflective.GetHashCode();
         hashCode = (hashCode * 397) ^ Shininess;
         return(hashCode);
     }
 }
Esempio n. 5
0
 public override int GetHashCode()
 {
     return
         (Color.GetHashCode() ^
          Ambient.GetHashCode() ^
          Diffuse.GetHashCode() ^
          Specular.GetHashCode() ^
          Shininess.GetHashCode() ^
          Pattern.GetHashCode() ^
          Reflective.GetHashCode() ^
          Transparency.GetHashCode() ^
          RefractiveIndex.GetHashCode());
 }
Esempio n. 6
0
        public override bool Equals(object obj)
        {
            var other = obj as Material;

            return((other != null) &&
                   (Color.Equals(other.Color)) &&
                   (Ambient.IsEqual(other.Ambient)) &&
                   (Diffuse.IsEqual(other.Diffuse)) &&
                   (Specular.IsEqual(other.Specular)) &&
                   (Shininess.IsEqual(other.Shininess)) &&
                   (Reflective.IsEqual(other.Reflective)) &&
                   (Transparency.IsEqual(other.Transparency)) &&
                   (RefractiveIndex.IsEqual(other.RefractiveIndex)));
        }
        private void EnsureUpdateIsGranted <T>(object newVal, T existingObj, string existingPropertyName, bool isReadonly)
        {
            var oldValue = Reflective.GetValue <object>(existingObj, existingPropertyName);

            // if it's an enum, cast it to ints int representation
            if (oldValue?.GetType().IsEnum ?? false)
            {
                oldValue = (int)Enum.Parse(oldValue.GetType(), oldValue.ToString());
            }

            if (!Equals(newVal, oldValue) && isReadonly)
            {
                throw new ForbiddenException($"Update on field {existingPropertyName} is not allowed, but server received updated values");
            }
        }
    private void SendToAll(string csv, Reflective data)
    {
        if (!__debugInitialized)
        {
            SetupSimple();
        }
        if (string.IsNullOrWhiteSpace(csv))
        {
            return;
        }
        string[] events = csv.Trim().Split(',');

        if (__SimpleDebugging)
        {
            Log.Write(LogLevel.Info, __SimpleTag, "Sending " + events.Length + " events: " + string.Join(", ", events));
        }
        foreach (string eventName in events)
        {
            PostScriptEvent(eventName.Trim(), data);
        }
    }
        private void InitModelData()
        {
            modelData = new JObject();

            // inject data
            var accessRoles = Reflective.GetConstants <string>(typeof(AccessRoles));
            var fieldTypes  = Reflective.GetConstants <string>(typeof(ElasticFieldTypes));

            JsonHelper.AddOrSet(modelData, "accessRoles", JObject.FromObject(accessRoles));
            JsonHelper.AddOrSet(modelData, "fieldTypes", JObject.FromObject(fieldTypes));

            // types
            var types = JsonHelper.GetTokenValue <JObject>(modelData, TypesKey, true);

            if (types != null)
            {
                foreach (JProperty property in types.Children())
                {
                    var t = ModelType.CreateFrom(property);
                    typesByNameCamelCased[t.Name.ToLowerCamelCase()] = t;
                }
            }

            // templates
            foreach (var template in TemplateDefinitions.Templates)
            {
                var t = ModelType.CreateFrom(template);
                typesByNameCamelCased[t.Name.ToLowerCamelCase()] = t;
            }

            // setup Super
            foreach (var type in typesByNameCamelCased.Values)
            {
                var superName = (type.SuperName ?? string.Empty).ToLowerCamelCase();
                if (!string.IsNullOrEmpty(superName) && typesByNameCamelCased.ContainsKey(superName))
                {
                    type.Super = typesByNameCamelCased[superName];
                }
            }
        }
Esempio n. 10
0
        public override int GetHashCode()
        {
            var hashCode = 412502415;

            hashCode = hashCode * -1521134295 + EqualityComparer <Pattern> .Default.GetHashCode(pattern);

            hashCode = hashCode * -1521134295 + EqualityComparer <Color> .Default.GetHashCode(color);

            hashCode = hashCode * -1521134295 + ambient.GetHashCode();
            hashCode = hashCode * -1521134295 + diffuse.GetHashCode();
            hashCode = hashCode * -1521134295 + specular.GetHashCode();
            hashCode = hashCode * -1521134295 + shinniness.GetHashCode();
            hashCode = hashCode * -1521134295 + reflective.GetHashCode();
            hashCode = hashCode * -1521134295 + refractiveIndex.GetHashCode();
            hashCode = hashCode * -1521134295 + transparency.GetHashCode();
            hashCode = hashCode * -1521134295 + Ambient.GetHashCode();
            hashCode = hashCode * -1521134295 + Diffuse.GetHashCode();
            hashCode = hashCode * -1521134295 + Specular.GetHashCode();
            hashCode = hashCode * -1521134295 + Shinniness.GetHashCode();
            hashCode = hashCode * -1521134295 + Reflective.GetHashCode();
            hashCode = hashCode * -1521134295 + RefracIndex.GetHashCode();
            hashCode = hashCode * -1521134295 + Transparency.GetHashCode();
            return(hashCode);
        }
Esempio n. 11
0
        static void Main(string[] args)
        {
            var instances = new Reflective <Base>()
                            .Abstract(() => false)
                            .Lookup()
                            .WithInstances();

            foreach (var instance in instances)
            {
                instance.Hello();
            }

            var instances2 = new Reflective <Base>()
                             .Abstract(() => false)
                             .Lookup()
                             .FullNames();

            foreach (var ins in instances2)
            {
                Console.WriteLine(ins);
            }

            var instances3 = new Reflective <Base>()
                             .Abstract(() => false)
                             .Lookup()
                             .WithAttribute(() => typeof(DisplayNameAttribute))
                             .FullNames();


            foreach (var ins in instances3)
            {
                Console.WriteLine(ins);
            }

            Console.ReadKey();
        }
Esempio n. 12
0
 protected bool Equals(Material other)
 {
     return(Equals(Pattern, other.Pattern) && Ambient.Equals(other.Ambient) && Diffuse.Equals(other.Diffuse) && Specular.Equals(other.Specular) && Shininess == other.Shininess && Reflective.Equals(other.Reflective));
 }
Esempio n. 13
0
        public void Build()
        {
            lights          = new List <PointLight>();
            objects         = new List <Primitive>();
            backgroundColor = RGBColor.BLACK;
            //camera = new OrthogonalCamera(600, 480);
            int sceneWidth  = 240;
            int sceneHeight = 240;

            camera   = new PerspectiveCamera(new Vector3(0, 0, 80), new Vector3(0, 0, -1), 50, sceneWidth, sceneHeight); //50
            jittered = new Jittered(9);
            //tracer = new MultipleObjectsTracer(this);

            tracer = new Whitted(this, 10);

            Material.Material orangeMaterial  = new Phong(Color.Orange, 0.8, 1, 30);
            Material.Material redMaterial     = new Lambertian(Color.PowderBlue);
            Material.Material blueMaterial    = new Lambertian(RGBColor.NAVY_BLUE);
            Material.Material grayMaterial    = new Phong(Color.LightGray, 0.8, 1, 30);
            Material.Material yellowMaterial  = new Phong(Color.Yellow, 0.8, 1, 30);
            Material.Material skyBlueMaterial = new Phong(Color.SkyBlue, 0.8, 1, 30);
            Material.Material refMat          = new Reflective(RGBColor.WHITE, 0, 1, 350, 1);
            Material.Material refMat1         = new Reflective(RGBColor.WHITE, 0.5, 1, 350, 0.5);
            Material.Material lamb            = new Lambertian(RGBColor.SKY_BLUE);
            Material.Material refractiveMat   = new Refractive(RGBColor.WHITE, 0, 1, 350, 1);


            Quad wall1 = new Quad(new Vector3(-30, 30, 30), new Vector3(-30, -30, 30), new Vector3(-15, 15, -15), new Vector3(-15, -15, -15));
            //wall1.AddQuadToScene(this, skyBlueMaterial);


            Triangle t1 = new Triangle(new Vector3(-30, 30, 30), new Vector3(-30, -30, 30), new Vector3(-20, 20, -15), new Vector3(1, 0, 0));

            t1.Material = redMaterial;
            AddObject(t1);
            Triangle t2 = new Triangle(new Vector3(-30, -30, 30), new Vector3(-20, 20, -15), new Vector3(-20, -20, -15), new Vector3(1, 0, 0));

            t2.Material = redMaterial;
            AddObject(t2);

            Triangle t3 = new Triangle(new Vector3(30, 30, 30), new Vector3(30, -30, 30), new Vector3(20, 20, -15), new Vector3(-1, 0, 0));

            t3.Material = blueMaterial;
            AddObject(t3);
            Triangle t4 = new Triangle(new Vector3(30, -30, 30), new Vector3(20, 20, -15), new Vector3(20, -20, -15), new Vector3(-1, 0, 0));

            t4.Material = blueMaterial;
            AddObject(t4);

            Triangle t5 = new Triangle(new Vector3(-30, -30, 30), new Vector3(-20, -20, -15), new Vector3(30, -30, 30), new Vector3(0, 1, 0));

            t5.Material = grayMaterial;
            AddObject(t5);
            Triangle t6 = new Triangle(new Vector3(30, -30, 30), new Vector3(-20, -20, -15), new Vector3(20, -20, -15), new Vector3(0, 1, 0));

            t6.Material = grayMaterial;
            AddObject(t6);

            Triangle t7 = new Triangle(new Vector3(-20, 20, -15), new Vector3(-20, -20, -15), new Vector3(20, 20, -15), new Vector3(0, 0, 1));

            t7.Material = grayMaterial;
            AddObject(t7);
            Triangle t8 = new Triangle(new Vector3(20, 20, -15), new Vector3(20, -20, -15), new Vector3(-20, -20, -15), new Vector3(0, 0, 1));

            t8.Material = grayMaterial;
            AddObject(t8);

            Triangle t9 = new Triangle(new Vector3(-30, 30, 30), new Vector3(30, 30, 30), new Vector3(-20, 20, -15), new Vector3(0, -1, 0));

            t9.Material = grayMaterial;
            AddObject(t9);
            Triangle t10 = new Triangle(new Vector3(30, 30, 30), new Vector3(-20, 20, -15), new Vector3(20, 20, -15), new Vector3(0, -1, 0));

            t10.Material = grayMaterial;
            AddObject(t10);

            Sphere sphere = new Sphere(new Vector3(-5, 10, 10), 8);

            sphere.Material = refractiveMat;
            AddObject(sphere);

            Sphere sphere1 = new Sphere(new Vector3(10, 0, 12), 5);

            sphere1.Material = orangeMaterial;
            AddObject(sphere1);

            sphere1          = new Sphere(new Vector3(-4, -6, 15), 6);
            sphere1.Material = refMat;
            AddObject(sphere1);

            Plane plane = new Plane(new Vector3(0, -5, 0), new Vector3(0, 1, 0));

            plane.Material = orangeMaterial;
            //AddObject(plane);

            Mesh mesh = new Mesh("ico.obj");
            // mesh.AddModelToScene(this, yellowMaterial);

            PointLight light = new PointLight(new Vector3(0, 17, 50), RGBColor.WHITE);

            AddLight(light);

            /*sphere = new Sphere(new Vector3(0, -10, 0), 5);
             * sphere.Material = yellowMaterial;
             * //AddObject(sphere);
             *
             * Triangle triangle = new Triangle(new Vector3(0, 0, 10), new Vector3(10, 0, 10), new Vector3(10, 10, 10), new Vector3(0, 0, 1));
             * triangle.Material = orangeMaterial;
             * //AddObject(triangle);
             *
             * Mesh mesh = new Mesh("ico.obj");
             * mesh.AddModelToScene(this, yellowMaterial);
             *
             * Plane plane = new Plane(new Vector3(0,0,-40), new Vector3(0,0,1));
             * Material.Material lamb2 = new Lambertian(RGBColor.DARK_SALMON);
             * Material.Material refMat = new Reflective(RGBColor.GREEN, 0.8, 1, 30, 0.1);
             * plane.Material = lamb2;
             * AddObject(plane);*/

            // PointLight light = new PointLight(new Vector3(-25, 0, 20), Color.White);
            // AddLight(light);

            // PointLight light1 = new PointLight(new Vector3(25, 0, 20), Color.White);
            // AddLight(light1);



            // Sphere sphere = new Sphere(new Vector3(0, 0, 0), 10);

            /* Triangle t7 = new Triangle(new Vector3(0, 0, 0), new Vector3(10, 0, 0), new Vector3(10, 10, 0), new Vector3(0, 0, 1));
             * t7.Material = grayMaterial;
             *
             *
             * Bitmap textureBitmap = new Bitmap("test.png");
             * RectangularMapping sphericalMapping = new RectangularMapping();
             * ImageTexture imageTexture = new ImageTexture(textureBitmap, sphericalMapping);
             *
             * LambertianTexture textureMaterial = new LambertianTexture(imageTexture);
             *
             *
             * t7.Material = textureMaterial;
             * AddObject(t7);
             * PointLight light = new PointLight(new Vector3(20, 0, 40), Color.White);
             * AddLight(light);*/
        }
Esempio n. 14
0
 protected void SendToAll(string csv, Reflective data)
 {
     GetWrapper(SendEventWrappers, csv)?.SendToAll(data);
 }
Esempio n. 15
0
 public void PostSimpleEvent(string name, Reflective data)
 {
     PostScriptEvent(name, data);
 }
Esempio n. 16
0
        public override void Build()
        {
            vp            = ViewPlane.Create(1920, 1080, SystemOfCoordinates.SSC_INT);
            vp.NumSamples = 64;
            vp.MaxDepth   = 10;

            backgroundColor = ColorUtils.BLACK;
            tracer          = new Whitted(this);

            Ambient a = new Ambient();

            a.ScaleRadiance = 1.0f;
            AmbientLight    = a;

            Pinhole pinhole = new Pinhole(new Vec3(7.5, 3, 9.5),
                                          new Vec3(5.0, 2.5, 0.0),
                                          new Vec3(0.0, 1.0, 0.0),
                                          800);

            Camera = pinhole;

            PointLight l1 = new PointLight();

            l1.Color = ColorUtils.WHITE;
            l1.SetLocation(10, 10, 0);
            l1.ScaleRadiance = 2.0f;
            AddLight(l1);

            PointLight l2 = new PointLight();

            l2.Color = ColorUtils.WHITE;
            l2.SetLocation(0, 10, 10);
            l2.ScaleRadiance = 2.0f;
            AddLight(l2);

            PointLight l3 = new PointLight();

            l3.Color = ColorUtils.WHITE;
            l3.SetLocation(-10, 10, 0);
            l3.ScaleRadiance = 2.0f;
            AddLight(l3);

            PointLight l4 = new PointLight();

            l4.Color = ColorUtils.WHITE;
            l4.SetLocation(0, 10, -10);
            l4.ScaleRadiance = 2.0f;
            AddLight(l4);

            //sphere
            Reflective r1 = new Reflective();

            r1.SetKa(0.1f);
            r1.SetKd(0.4f);
            r1.SetCd(0, 0, 1);
            r1.SetKs(0.25f);
            r1.SetExp(100.0f);
            r1.SetKr(0.85f);
            r1.SetReflectiveColor(0.75f, 0.75f, 1.0f);
            //r1.SetSpecularColor(ColorUtils.WHITE);

            Sphere s1 = new Sphere(new Vec3(0, 0.5, 0), 4);

            s1.Material = r1;
            AddObject(s1);

            //wall
            double roomSize = 11.0;

            //floor
            Matte m1 = new Matte(new Vec3(0.25), 0.1f, 0.50f);

            Plane floor = new Plane(new Vec3(0, -roomSize, 0), new Vec3(0, 1, 0));

            floor.Material = m1;
            AddObject(floor);

            //ceiling
            Matte m2 = new Matte(ColorUtils.WHITE, 0.35f, 0.50f);

            Plane ceiling = new Plane(new Vec3(0, roomSize, 0), new Vec3(0, -1, 0));

            ceiling.Material = m2;
            AddObject(ceiling);

            //back
            Matte m3 = new Matte(new Vec3(0.5, 0.75, 0.75), 0.15f, 0.60f);

            Plane back = new Plane(new Vec3(0, 0, -roomSize), new Vec3(0, 0, 1));

            back.Material = m3;
            AddObject(back);

            //front
            Plane front = new Plane(new Vec3(0, 0, roomSize), new Vec3(0, 0, -1));

            front.Material = m3;
            AddObject(front);

            //left
            Matte m4 = new Matte(new Vec3(0.71, 0.40, 0.20), 0.15f, 0.60f);

            Plane left = new Plane(new Vec3(-roomSize, 0, 0), new Vec3(1, 0, 0));

            left.Material = m4;
            AddObject(left);

            //front
            Plane right = new Plane(new Vec3(roomSize, 0, 0), new Vec3(-1, 0, 0));

            right.Material = m4;
            AddObject(right);

            //mirrors
            double mirrorSize = 8;
            double offset     = 1.0;

            Reflective r2 = new Reflective();

            r2.SetKa(0.0f);
            r2.SetKd(0.0f);
            r2.SetCd(0, 0, 0);
            r2.SetKs(0.0f);
            r2.SetExp(2.0f);
            r2.SetKr(0.9f);
            r2.SetReflectiveColor(0.9f, 1.0f, 0.9f);
            //r2.SetSpecularColor(ColorUtils.WHITE);

            float           e = 25000;
            GlossyReflector g = new GlossyReflector();

            g.SetSamples(vp.NumSamples, e);
            g.SetKa(0.0f);
            g.SetKd(0.0f);
            g.SetKs(0.0f);
            g.SetExp(e);
            g.SetCd(0, 0, 0);
            g.SetKr(0.9f);
            g.SetExponent(e);
            g.SetReflectiveColor(0.9f, 1.0f, 0.9f);
            //r.SetSpecularColor(ColorUtils.WHITE);
            //back
            Rectangle rect1 = new Rectangle(new Vec3(-mirrorSize, -mirrorSize, -(roomSize - offset)),
                                            new Vec3(2.0 * mirrorSize, 0, 0),
                                            new Vec3(0, 2.0 * mirrorSize, 0),
                                            new Vec3(0, 0, 1),
                                            g);

            AddObject(rect1);

            //front
            Rectangle rect2 = new Rectangle(new Vec3(-mirrorSize, -mirrorSize, +(roomSize - offset)),
                                            new Vec3(2.0 * mirrorSize, 0, 0),
                                            new Vec3(0, 2.0 * mirrorSize, 0),
                                            new Vec3(0, 0, -1),
                                            g);

            AddObject(rect2);

            //left
            Rectangle rect3 = new Rectangle(new Vec3(-(roomSize - offset), -mirrorSize, mirrorSize),
                                            new Vec3(0, 0, -2.0 * mirrorSize),
                                            new Vec3(0, 2.0 * mirrorSize, 0),
                                            new Vec3(1, 0, 0),
                                            r2);

            AddObject(rect3);

            //
            Reflective r3 = new Reflective();

            r3.SetKa(0.0f);
            r3.SetKd(0.0f);
            r3.SetCd(0, 0, 0);
            r3.SetKs(0.0f);
            r3.SetExp(2.0f);
            r3.SetKr(1.0f);
            r3.SetReflectiveColor(1.0f, 1.0f, 0.5f);
            //r3.SetSpecularColor(ColorUtils.WHITE);

            Rectangle rect4 = new Rectangle(new Vec3(-mirrorSize, -4.0, -mirrorSize),
                                            new Vec3(0, 0, 2.0 * mirrorSize),
                                            new Vec3(2.0 * mirrorSize, 0, 0),
                                            new Vec3(0, 1, 0),
                                            r3);

            AddObject(rect4);
        }
        public override void Build()
        {
            vp            = ViewPlane.Create(1024, 768, SystemOfCoordinates.SSC_INT);
            vp.NumSamples = 100;
            vp.MaxDepth   = 10;

            backgroundColor = new Vec3(0.0, 0.3, 0.25);
            tracer          = new Whitted(this);

            //AmbientOccluder a = new AmbientOccluder(ColorUtils.WHITE,
            //                                        0.25, 1.0);
            //a.Sampler = new MultiJittered(vp.NumSamples);
            Ambient a = new Ambient();

            a.ScaleRadiance = 0.25f;
            AmbientLight    = a;

            Pinhole pinhole = new Pinhole(new Vec3(1, 7.5, 20),
                                          new Vec3(0.0, -0.35, 0.0),
                                          new Vec3(0.0, 1.0, 0.0),
                                          5250);

            Camera = pinhole;

            Emissive e = new Emissive();

            e.ScaleRadiance = 3.0f;
            e.Ce            = ColorUtils.WHITE;

            RectangularLamp lamp = new RectangularLamp(
                new Rectangle(new Vec3(0, 20, 0),
                              new Vec3(1, 0, 0),
                              new Vec3(0, 0, 1),
                              new Vec3(0, -1, 0)),
                e);

            lamp.Sampler = new MultiJittered(vp.NumSamples);
            AddObject(lamp);

            AreaLight areaLight = new AreaLight();

            areaLight.Object  = lamp;
            areaLight.Shadows = true;
            AddLight(areaLight);

            //PointLight l = new PointLight();
            //l.SetLocation(20, 20, 15);
            //l.ScaleRadiance = 3.0f;
            //AddLight(l);

            Transparent glass = new Transparent();

            glass.SetKs(0.5f);
            glass.SetExp(2000);
            glass.SetIor(1.5f);
            glass.SetKr(0.1f);
            glass.SetKt(1.53f);
            //glass.SetCd(0.4f);

            float ir = 0.9f;
            float or = 1;

            //Bowl b = Bowl.CreateFlatRimmedBowl(ir, or);
            Bowl b = Bowl.CreateRoundRimmedBowl(ir, or);

            b.Material = glass;
            AddObject(b);

            Reflective reflective = new Reflective();

            reflective.SetKa(0.6f);
            reflective.SetKd(0.4f);
            reflective.SetCd(ColorUtils.RED);
            reflective.SetKs(0.5f);
            reflective.SetExp(2000);
            reflective.SetKr(0.25f);

            double r = 0.4;
            double t = 55;

            t = MathUtils.PI * t / 180;
            double x = -(0.9 - r) * Math.Cos(t);
            double y = -(0.9 - r) * Math.Sin(t);

            Sphere s = new Sphere(new Vec3(x, y, 0), r, reflective);

            AddObject(s);

            Reflective reflective2 = new Reflective();

            reflective2.SetKa(0.6f);
            reflective2.SetKd(0.4f);
            reflective2.SetCd(ColorUtils.YELLOW);
            reflective2.SetKs(0.5f);
            reflective2.SetExp(2000);
            reflective2.SetKr(0.5f);

            r = 0.35;
            t = 35;
            t = MathUtils.PI * t / 180;
            x = (0.9 - r) * Math.Cos(t);
            y = -(0.9 - r) * Math.Sin(t);

            Sphere s2 = new Sphere(new Vec3(x, y, 0), r, reflective2);

            AddObject(s2);

            Matte rm = new Matte();

            rm.SetColor(ColorUtils.WHITE);
            rm.SetKa(0.8f);
            rm.SetKd(0.85f);

            Rectangle rectangle = new Rectangle(new Vec3(-2, -1, -5),
                                                new Vec3(0, 0, 9),
                                                new Vec3(4, 0, 0));

            rectangle.Material = rm;
            AddObject(rectangle);
        }
Esempio n. 18
0
        public static T GetServerSettings <T>() where T : SettingsEntry
        {
            var relativePath = Reflective.GetValue <string>(typeof(T), "RelativePath");

            return(GetServerSettings <T>(relativePath));
        }
Esempio n. 19
0
        private async Task <IHttpActionResult> UpdateOrderItem([FromBody] OrderingFlatItem flatItem, ModulFunktionsblock modulFunktionsblock)
        {
            var existingOrdering = await orderManagerClient.GetOrdering(flatItem.OrderId);

            if (existingOrdering == null)
            {
                return(BadRequest("Ordering does not exist in DB"));
            }

            var existingItem = existingOrdering.Items.FirstOrDefault(i => i.Id == flatItem.ItemId);

            if (existingItem == null)
            {
                return(BadRequest("OrderItem does not exist in DB"));
            }

            var updateOrderingData  = new UpdateOrderingData();
            var updateOrderItemData = new UpdateOrderItemData();

            // map flatitem back to to ordering & orderitem
            foreach (var field in GetOrderingFieldsInternal(modulFunktionsblock))
            {
                var flatItemProperty = typeof(OrderingFlatItem).GetProperty(field.Name);
                if (flatItemProperty == null)
                {
                    throw new ArgumentOutOfRangeException(field.Name);
                }

                var newVal          = flatItemProperty.GetValue(flatItem);
                var originAttribute = flatItemProperty.GetCustomAttributes(true).OfType <OriginAttribute>().FirstOrDefault();

                if (string.IsNullOrWhiteSpace(originAttribute?.Column) || string.IsNullOrWhiteSpace(originAttribute.Table))
                {
                    continue; // field is not updateable, because it is missing the origin attribute
                }

                switch (originAttribute.Table)
                {
                case nameof(Ordering):
                    EnsureUpdateIsGranted(newVal, existingOrdering, originAttribute.Column, field.IsReadonly);
                    Reflective.SetValue(updateOrderingData, originAttribute.Column, newVal);
                    break;

                case nameof(OrderItem):
                    EnsureUpdateIsGranted(newVal, existingItem, originAttribute.Column, field.IsReadonly);
                    Reflective.SetValue(updateOrderItemData, originAttribute.Column, newVal);
                    break;

                default:
                    throw new ArgumentOutOfRangeException(nameof(originAttribute.Table), $"Unknown table: {originAttribute.Table}");
                }
            }

            var data = new UpdateOrderDetailData
            {
                OrderItem = updateOrderItemData,
                Ordering  = updateOrderingData
            };

            await orderManagerClient.UpdateOrderDetail(data);

            return(StatusCode(HttpStatusCode.NoContent));
        }
        private async Task <IHttpActionResult> UpdateOrderItem([FromBody] OrderingFlatItem flatItem, ModulFunktionsblock modulFunktionsblock)
        {
            var existingOrdering = await orderManagerClient.GetOrdering(flatItem.OrderId);

            if (existingOrdering == null)
            {
                return(BadRequest("Ordering does not exist in DB"));
            }

            var existingItem = existingOrdering.Items.FirstOrDefault(i => i.Id == flatItem.ItemId);

            if (existingItem == null)
            {
                return(BadRequest("OrderItem does not exist in DB"));
            }

            var updateOrderingData  = new UpdateOrderingData();
            var updateOrderItemData = new UpdateOrderItemData();

            // map flatitem back to to ordering & orderitem
            foreach (var field in GetOrderingFieldsInternal(modulFunktionsblock))
            {
                var flatItemProperty = typeof(OrderingFlatItem).GetProperty(field.Name);
                if (flatItemProperty == null)
                {
                    throw new ArgumentOutOfRangeException(field.Name);
                }

                var newVal          = flatItemProperty.GetValue(flatItem);
                var originAttribute = flatItemProperty.GetCustomAttributes(true).OfType <OriginAttribute>().FirstOrDefault();

                if (string.IsNullOrWhiteSpace(originAttribute?.Column) || string.IsNullOrWhiteSpace(originAttribute.Table))
                {
                    continue; // field is not updateable, because it is missing the origin attribute
                }

                switch (originAttribute.Table)
                {
                case nameof(Ordering):
                    EnsureUpdateIsGranted(newVal, existingOrdering, originAttribute.Column, field.IsReadonly);
                    Reflective.SetValue(updateOrderingData, originAttribute.Column, newVal);
                    break;

                case nameof(OrderItem):
                    EnsureUpdateIsGranted(newVal, existingItem, originAttribute.Column, field.IsReadonly);
                    Reflective.SetValue(updateOrderItemData, originAttribute.Column, newVal);
                    break;

                default:
                    throw new ArgumentOutOfRangeException(nameof(originAttribute.Table), $"Unknown table: {originAttribute.Table}");
                }
            }

            if (flatItem.Status == (int)OrderStatesInternal.Ausgeliehen && !existingItem.Ausleihdauer.Equals(flatItem.Ausleihdauer))
            {
                var user = ControllerHelper.UserDataAccess.GetUser(ControllerHelper.GetCurrentUserId());
                updateOrderItemData.InternalComment = updateOrderItemData.InternalComment.Prepend(
                    $"Erwartetes Rückgabedatum von {existingItem.Ausgabedatum.Value.AddDays(existingItem.Ausleihdauer):dd.MM.yyyy} " +
                    $"auf {flatItem.Ausgabedatum.Value.AddDays(flatItem.Ausleihdauer):dd.MM.yyyy} angepasst," +
                    $" {DateTime.Now.ToString("dd.MM.yyyy HH:mm:ss")}, {user.FirstName} {user.FamilyName}");
            }

            var data = new UpdateOrderDetailData
            {
                OrderItem = updateOrderItemData,
                Ordering  = updateOrderingData
            };

            await orderManagerClient.UpdateOrderDetail(data);

            return(StatusCode(HttpStatusCode.NoContent));
        }
        public override void Build()
        {
            vp            = ViewPlane.Create(1920, 1080, SystemOfCoordinates.SSC_INT);
            vp.NumSamples = 144;
            vp.MaxDepth   = 10;

            backgroundColor = new Vec3(0.15);
            tracer          = new AreaLighting(this);

            AmbientOccluder a = new AmbientOccluder();

            a.ScaleRadiance = 0.5;
            a.MinAmount     = 0.05;
            a.Sampler       = new MultiJittered(vp.NumSamples);
            AmbientLight    = a;

            Pinhole pinhole = new Pinhole(new Vec3(75, 40, 100),
                                          new Vec3(-10, 39, 0),
                                          new Vec3(0.0, 1.0, 0.0),
                                          360, 3.0f);

            Camera = pinhole;

            Rectangle rectangle = new Rectangle(new Vec3(75, 40, 100),
                                                new Vec3(0, 50, 0),
                                                new Vec3(50, 0, -50));
            Emissive        e    = new Emissive(ColorUtils.WHITE, 20);
            RectangularLamp lamp = new RectangularLamp(rectangle, e);

            lamp.Sampler = new MultiJittered(vp.NumSamples);
            lamp.Shadows = false;

            AddObject(lamp);

            AreaLight light = new AreaLight();

            light.Object = lamp;

            AddLight(light);

            Reflective reflective1 = new Reflective();

            reflective1.SetKa(0.25f);
            reflective1.SetKd(0.5f);
            reflective1.SetColor(0.75f, 0.75f, 0.0f);
            reflective1.SetSpecularColor(ColorUtils.WHITE);
            reflective1.SetKs(0.15f);
            reflective1.SetExp(100.0f);
            reflective1.SetKr(0.75f);
            reflective1.SetReflectiveColor(ColorUtils.WHITE);

            double radius = 23.0;
            Sphere s1     = new Sphere(new Vec3(38, radius, -25), radius);

            s1.Material = reflective1;
            AddObject(s1);

            Matte matte1 = new Matte();

            matte1.SetKa(0.45f);
            matte1.SetKd(0.75f);
            matte1.SetColor(0.75f, 0.25f, 0.0f);

            Sphere s2 = new Sphere(new Vec3(-7, 10, 42), 20);

            s2.Material = matte1;
            AddObject(s2);

            Reflective reflective2 = new Reflective();

            reflective2.SetKa(0.35f);
            reflective2.SetKd(0.75f);
            reflective2.SetColor(ColorUtils.BLACK);
            reflective2.SetSpecularColor(ColorUtils.WHITE);
            reflective2.SetKs(0.0f);
            reflective2.SetExp(1.0f);
            reflective2.SetKr(0.75f);
            reflective2.SetReflectiveColor(ColorUtils.WHITE);

            Sphere s3 = new Sphere(new Vec3(-30, 59, 35), 20);

            s3.Material = reflective2;
            AddObject(s3);

            //cylinder
            Reflective reflective3 = new Reflective();

            reflective3.SetKa(0.35f);
            reflective3.SetKd(0.5f);
            reflective3.SetColor(0.0f, 0.5f, 0.75f);
            reflective3.SetSpecularColor(ColorUtils.WHITE);
            reflective3.SetKs(0.2f);
            reflective3.SetExp(100.0f);
            reflective3.SetKr(0.75f);
            reflective3.SetReflectiveColor(ColorUtils.WHITE);

            float b  = 0.0f;
            float t  = 85f;
            float cr = 22f;

            SolidCylinder cylinder = new SolidCylinder(b, t, cr);

            cylinder.Material = reflective3;
            AddObject(cylinder);

            //box
            Matte matte2 = new Matte();

            matte2.SetKa(0.15f);
            matte2.SetKd(0.5f);
            matte2.SetColor(0.75f, 1.0f, 0.75f);

            Box box = new Box(new Vec3(-35, 0, -110),
                              new Vec3(-25, 60, 65));

            box.Material = matte2;
            AddObject(box);

            //plane
            Matte matte3 = new Matte();

            matte3.SetKa(0.30f);
            matte3.SetKd(0.9f);
            matte3.SetColor(ColorUtils.WHITE);

            Plane plane = new Plane(new Vec3(),
                                    new Vec3(0, 1, 0));

            plane.Material = matte3;

            AddObject(plane);
        }
Esempio n. 22
0
    public void build()
    {
        DestroyRenderAreaTexture();

        texture = new Texture2D(200, 200);
        GameObject.Find("ViewRectangle").GetComponent <MeshRenderer> ().material.mainTexture = texture;
        vp           = new ViewPlane(texture.width, texture.height, 1.0f, 1);
        vp.max_depth = 5;

        tracer_ptr = new GlobalTracer(this);

        Ambient amblight = new Ambient();

        amblight.scale_radiance(1.0f);
        amblight.set_color(new Color(1, 1, 1, 1));
        set_ambient_light(amblight);


        PerspectiveCamera pinhole_ptr1 = new PerspectiveCamera();

        pinhole_ptr1.set_eye(new Vector3(0, 0, 500));
        pinhole_ptr1.set_lookat(Vector3.zero);
        pinhole_ptr1.set_view_distance(600.0f);
        pinhole_ptr1.compute_uvw();
        set_camera(pinhole_ptr1);

        Directional directional = new Directional();

        directional.set_color(new Color(1, 1, 1, 1));
        directional.set_direction(new Vector3(-1, -1, 0));
        directional.cast_shadows = false;
        directional.scale_radiance(3.0f);
        add_light(directional);

        Reflective mat_ptr = new Reflective();

        mat_ptr.set_kr(1.0f);
        mat_ptr.set_exp(1.0f);
        mat_ptr.set_cr(sphere_1_col);

        Sphere sphere = new Sphere();

        sphere.sphereCenter = new Vector3(0, 0, 0);
        sphere.sphereRad    = 1.0f;
        sphere.set_material(mat_ptr);

        Instance sphereInst = new Instance(sphere);

        sphereInst.set_material(mat_ptr);
        add_object(sphereInst);

        sphereInst.set_identity();
        sphereInst.Scale(20, 20, 20);
        sphereInst.Translate(60.0f, 20.0f, 0);

        Matte mat_ptr1 = new Matte();

        mat_ptr1.ambient_brdf.Set_Sampler(100, 0.5f);
        mat_ptr1.diffuse_brdf.Set_Sampler(100, 0.5f);
        mat_ptr1.set_ka(1.0f);
        mat_ptr1.set_kd(1);
        mat_ptr1.set_cd(plane_col);


        Plane p = new Plane();

        p.planeNormal       = new Vector3(0, 1, 0);
        p.planePassThrghPnt = new Vector3(0, -20, 0);
        p.set_material(mat_ptr1);
        add_object(p);

        Emissive mat_ptr2 = new Emissive();

        mat_ptr2.scale_radiance(1);
        mat_ptr2.set_ce(sphere_2_col);

        Sphere sphere1 = new Sphere();

        sphere1.sphereCenter = new Vector3(0, 0, 0);
        sphere1.sphereRad    = 1.0f;
        sphere1.set_material(mat_ptr2);

        Instance sphereInst1 = new Instance(sphere1);

        sphereInst1.set_material(mat_ptr2);
        add_object(sphereInst1);

        sphereInst1.set_identity();
        sphereInst1.Scale(20, 20, 20);
        sphereInst1.Translate(-60.0f, 20.0f, 0);

        render_scene();
    }