IDrawable run(IDrawable input)
        {
            if (!(input is PointSet))
            {
                throw new Exception("PointSegmentTest. Input is not PointSegmentTest.");
            }

            var inp = input as PointSet;

            Point   a = inp[0];
            Point   b = inp[1];
            Point   c = inp[2];
            Segment d = new Segment(b, c);

            bool x = Intersect.IsIntersected(a, d);

            if (x)
            {
                return
                    (new DrawableSet(new List <IDrawable>()
                {
                    new SegmentSet(d), DrawableElement.Text(0, 0, "Vse horosho")
                }));
            }
            else
            {
                return(new DrawableSet(new List <IDrawable>()
                {
                    new SegmentSet(d), DrawableElement.Text(0, 0, "Vse ploho")
                }));
            }
        }
        IDrawable run(IDrawable input)
        {
            if (!(input is PointSet))
            {
                throw new Exception("PointPolygonTest. Input is not PointPolygonTest.");
            }

            var inp = input as PointSet;

            Point a = inp[0]; Point c = inp[1]; Point d = inp[2];
            var   b = new ConvexPolygon(new Point(c.X, c.Y), new Point(d.X, c.Y), new Point(d.X, d.Y), new Point(c.X, d.Y));

            var x = Intersect.IsIntersected(a, b);

            //var x = Intersect.GetIntersection(b, a);
            if (x)
            {
                return(new DrawableSet(new List <IDrawable>()
                {
                    new PointSet(), new PolygonSet(b), DrawableElement.Text(0, 0, "Vse horosho")
                }));
            }
            else
            {
                return(new DrawableSet(new List <IDrawable>()
                {
                    new PointSet(), new PolygonSet(b), DrawableElement.Text(0, 0, "Vse ploho")
                }));
            }
            //return new PointSet(x.ToArray());
        }
        public TilemapEntityComponent(EntityComponentDataCreationStruct parameters) : base(parameters)
        {
            var gameMode = GameInstance.GetService <GameModeManager>().ActiveGameMode;

            _drawableElement = GameInstance.GetService <SceneRenderer>().CreateDrawableElement(true);

            _drawableElement.Material = new Material
            {
                Color           = new Color(GetDataOrDefault("Shading", Vector3.One)),
                CastShadow      = true,
                ReceiveShadow   = true,
                UseTransparency = false,
                IsUnlit         = false,
                DiffuseTexture  = gameMode.GetTexture(GetData <string>("Texture"))
            };

            _drawableElement.IsActive = Parent.IsActive;

            var geometryData = CreateTilemapData();

            GameInstance.EnsureExecutedInMainThread(() => _drawableElement.Mesh = new Mesh(GameInstance.GraphicsDevice, geometryData, holdGeometryData: false));

            if (!Parent.IsInitializing)
            {
                _drawableElement.EndInitialzing();
            }
        }
        internal static DrawableElementProxy ToProxy(this DrawableElement element)
        {
            if (element is DrawableStep)
            {
                DrawableStep step = element as DrawableStep;
                return(new DrawableStepProxy(step));
            }

            if (element is DrawableLangModTogglerDSV)
            {
                DrawableLangModTogglerDSV dsv = element as DrawableLangModTogglerDSV;
                return(new DrawableLangModTogglerDSVProxy(dsv));
            }

            if (element is ActionListDrawLangMod)
            {
                ActionListDrawLangMod mod = element as ActionListDrawLangMod;
                return(new DrawableElementProxy(mod));
            }

            if (element is UIElementWrapperForUIContainer)
            {
                UIElementWrapperForUIContainer container = element as UIElementWrapperForUIContainer;
                return(new UIElementWrapperForUIContainerProxy(container));
            }

            if (element is DrawableTransition)
            {
                DrawableTransition transition = element as DrawableTransition;
                return(new DrawableTransitionProxy(transition));
            }

            return(new DrawableElementProxy(element));
        }
Exemple #5
0
        /// <summary>
        /// 创建属性
        /// </summary>
        /// <param name="doc"></param>
        /// <param name="id"></param>
        void CreateElementPropertyUI(Document doc, ElementId id)
        {
            var element = doc.FindElement(id);

            if (element == null)
            {
                return;
            }
            {
                Expander expander = new Expander();
                expander.Header  = "Element";
                expander.Content = new BasicPage(element);
                propertyBrowser.Children.Add(expander);
                expander.IsExpanded = true;
            }

            DrawableElement de = DrawableElement.Cast(element);

            if (de != null)
            {
                Expander expander = new Expander();
                expander.Header = "Location";
                var page = new TransformPage(de);
                page.UpdateViewEvent += mDocumentView.UpdateView;
                expander.Content      = page;
                propertyBrowser.Children.Add(expander);
                expander.IsExpanded = true;
            }
        }
Exemple #6
0
        IDrawable run(IDrawable input)
        {
            if (!(input is PointSet))
            {
                throw new Exception("SegmentCircleTest. Input is not SegmentCircleTest.");
            }

            var inp = input as PointSet;

            Point a = inp[0];
            Point b = inp[1];
            Point c = inp[2];

            Circle  d = new Circle(b.X, b.Y, c.X);
            Segment e = new Segment(new Point(0, 0), a);

            bool x = Intersect.IsIntersected(a, d);

            if (x)
            {
                return(new DrawableSet(new List <IDrawable>()
                {
                    new SegmentSet(e), new CircleSet(d), DrawableElement.Text(0, 0, "Vse horosho")
                }));
            }
            else
            {
                return(new DrawableSet(new List <IDrawable>()
                {
                    new SegmentSet(e), new CircleSet(d), DrawableElement.Text(0, 0, "Vse Ploho")
                }));
            }
        }
Exemple #7
0
        IDrawable run(IDrawable input)
        {
            if (!(input is PointSet))
            {
                throw new Exception("PolygonTest. Input is not PolygonTest.");
            }
            var   inp = input as PointSet;
            Point c = inp[0]; Point d = inp[1]; Point e = inp[2]; Point fe = inp[3];

            ConvexPolygon f1 = new ConvexPolygon(new Point((c.X + d.X) / 2, c.Y), new Point(d.X, (c.Y + d.Y) / 3), new Point(d.X, 2 * ((d.Y + c.Y) / 3)), new Point((c.X + d.X) / 2, d.Y), new Point(c.X, 2 * ((d.Y + c.Y) / 3)), new Point(c.X, ((d.Y + c.Y) / 3)));
            ConvexPolygon f2 = new ConvexPolygon(new Point((e.X + fe.X) / 2, e.Y), new Point(fe.X, (e.Y + fe.Y) / 3), new Point(fe.X, 2 * ((fe.Y + e.Y) / 3)), new Point((e.X + fe.X) / 2, fe.Y), new Point(e.X, 2 * ((fe.Y + e.Y) / 3)), new Point(e.X, ((fe.Y + e.Y) / 3)));
            var           x  = Intersect.GetIntersection(f1, f2);

            if (x.Count > 0)
            {
                return(new DrawableSet(new List <IDrawable>()
                {
                    new PointSet(x.ToArray()), new PolygonSet(f1, f2), DrawableElement.Text(0, 0, "Vse horosho")
                }));
            }
            else
            {
                return(new DrawableSet(new List <IDrawable>()
                {
                    new PointSet(x.ToArray()), new PolygonSet(f1, f2), DrawableElement.Text(0, 0, "Vse ploho")
                }));
            }
        }
Exemple #8
0
 public ModelEntityComponent(Entity parent, Mesh mesh, Material material, bool isBillboard) : base(parent)
 {
     _drawableElement = GameInstance.GetService<SceneRenderer>().CreateDrawableElement(true);
     _drawableElement.Material = material;
     _drawableElement.Mesh = mesh;
     IsBillboard = isBillboard;
 }
        public TransformPage(DrawableElement element)
        {
            mElement = element;
            var loc = mElement.GetCoordinateSystem().Location();

            mLocation = new GPnt(loc.XYZ());
            InitializeComponent();

            this.DataContext = this;
        }
 private void OnEndInitializing(DrawableElement element)
 {
     lock (_lockObject)
     {
         if (_initializingDrawables.Remove(element))
         {
             _allDrawables.Add(element);
         }
     }
 }
 public void RemoveDrawableElement(DrawableElement element)
 {
     lock (_lockObject)
     {
         if (!_initializingDrawables.Remove(element))
         {
             _allDrawables.Remove(element);
         }
     }
 }
Exemple #12
0
        public ModelEntityComponent(EntityComponentDataCreationStruct parameters) : base(parameters)
        {
            _drawableElement = GameInstance.GetService<SceneRenderer>().CreateDrawableElement(true);
            IsBillboard = GetDataOrDefault("IsBillboard", false);

            var modelReference = GetData<string>("MeshReference");
            var useTransparency = GetDataOrDefault("UseTransparency", false);
            var gameMode = GameInstance.GetService<GameModeManager>().ActiveGameMode;

            if (!string.IsNullOrEmpty(modelReference))
            {
                var primitiveMesh = gameMode.GetPrimitiveMesh(modelReference);
                if (primitiveMesh != null)
                {
                    _drawableElement.Mesh = primitiveMesh;
                    _drawableElement.Material = new Material();
                }
                else
                {
                    var modelMesh = gameMode.GetModel(modelReference).First();
                    _drawableElement.Mesh = modelMesh.Mesh;
                    _drawableElement.Material = modelMesh.Material;

                }

                _drawableElement.Material.Color = new Color(GetDataOrDefault("Shading", Vector3.One));
                _drawableElement.Material.CastShadow = true;
                _drawableElement.Material.ReceiveShadow = !useTransparency;
                _drawableElement.Material.UseTransparency = useTransparency;
                _drawableElement.Material.IsUnlit = false;
            }

            _regions = new List<TextureRegion>();
            var textures = GetEnumeratedData<string>("Texture");
            var regions = GetEnumeratedData<Rectangle>("Rectangle");

            if (textures.Length == 1)
            {
                AddTextureRegion(gameMode.GetTexture(textures[0]), regions.Length == 0 ? (Rectangle?)null : regions[0]);
            }
            else
            {
                for (var i = 0; i < textures.Length; i++)
                {
                    AddTextureRegion(gameMode.GetTexture(textures[0]), i >= regions.Length ? (Rectangle?)null : regions[i]);
                }
            }

            SetTexture(0);

            _drawableElement.IsActive = Parent.IsActive;
            if (!Parent.IsInitializing) _drawableElement.EndInitialzing();
        }
Exemple #13
0
        public void PopulatePort(Port port, string prefix)
        {
            List <string> str = new List <String>();

            foreach (var item in data)
            {
                str.Add(item.Name + " = \t" + item.Value);
            }
            var it = DrawableElement.Text(5, 5, str.ToArray());

            port[prefix + ".Variables"].Populate(it);
        }
Exemple #14
0
        public void PopulatePort(Port port, string prefix)
        {
            // Form a list of DrawableElement's
            List <DrawableElement> list = new List <DrawableElement>();

            foreach (var s in sgts)
            {
                list.Add(DrawableElement.Segment(s.Begin.X, s.Begin.Y, s.End.X, s.End.Y));
            }

            // To a port's chart named "prefix+..." add a list of DrawableElement's
            port[prefix + "Segments"].Populate(list);
        }
Exemple #15
0
        internal static void DrawElement(Camera camera, DrawableElement element, SceneEffect sceneEffect, float yRotationForBillboards)
        {
            sceneEffect.World          = element.GetWorldMatrix(camera.GlobalEulerAngles.Y);
            sceneEffect.WorldLight     = element.GetWorldMatrix(yRotationForBillboards);
            sceneEffect.DiffuseTexture = element.Material.DiffuseTexture;
            sceneEffect.TexcoordScale  = element.Material.TexcoordScale;
            sceneEffect.TexcoordOffset = element.Material.TexcoordOffset;
            sceneEffect.MaterialColor  = element.Material.Color;

            for (var i = 0; i < sceneEffect.CurrentTechniquePasses.Count; i++)
            {
                sceneEffect.CurrentTechniquePasses[i].Apply();
                element.Mesh.Draw();
            }
        }
Exemple #16
0
        public void PopulatePort(Port port, string prefix)
        {
            // Form a list of DrawableElement's
            List <DrawableElement> list = new List <DrawableElement>();

            foreach (var s in sts)
            {
                list.Add(DrawableElement.Circle(s.Center.X, s.Center.Y, s.Radius));
            }

            // To a port's chart named "prefix+..." add a list of DrawableElement's
            port[prefix + "Circle"].Populate(list);
            port[prefix + "Circle"].Settings.Color = "Black";
            port.Settings.Transformer = new ChainTransformer(new ScaleTransformer(0.3, -0.3), new TranslateTransformer(50, 200));
        }
Exemple #17
0
        internal static void DrawElement(Camera camera, DrawableElement element, SceneEffect sceneEffect, float yRotationForBillboards)
        {
            sceneEffect.World = element.GetWorldMatrix(camera.GlobalEulerAngles.Y);
            sceneEffect.WorldLight = element.GetWorldMatrix(yRotationForBillboards);
            sceneEffect.DiffuseTexture = element.Material.DiffuseTexture;
            sceneEffect.TexcoordScale = element.Material.TexcoordScale;
            sceneEffect.TexcoordOffset = element.Material.TexcoordOffset;
            sceneEffect.MaterialColor = element.Material.Color;

            for (var i = 0; i < sceneEffect.CurrentTechniquePasses.Count; i++)
            {
                sceneEffect.CurrentTechniquePasses[i].Apply();
                element.Mesh.Draw();
            }
        }
Exemple #18
0
        public override void OnAddElements(Document pDocument, ElementIdSet ids)
        {
            foreach (var id in ids)
            {
                var element = DrawableElement.Cast(pDocument.FindElement(id));
                if (element == null)
                {
                    continue;
                }

                var item = new BrowerNodeItem();
                item.DisplayName = String.Format("{0}({1})", element.GetName(), element.GetId().GetInteger());
                item.Tag         = element.GetId();
                mProjectBrower.Add(item);
            }
        }
Exemple #19
0
        IDrawable run(IDrawable input)
        {
            if (!(input is PointSet))
            {
                throw new Exception("SegmentPolygonTest. Input is not SegmentPolygonTest.");
            }

            var inp = input as PointSet;

            Point a = inp[0]; Point c = inp[1]; Point d = inp[2]; Point e = inp[3];

            //a = new Point(10, 10); e = new Point(40, 10); Point ee = new Point(60, 40);
            //Segment b = new Segment(a, e); //Segment bbb = new Segment(e, ee);
            Segment b  = new Segment(10, (c.Y + d.Y) / 2.5, 100, (c.Y + d.Y) / 2.5);
            var     f  = new ConvexPolygon(new Point((c.X + d.X) / 2, c.Y), new Point(d.X, (c.Y + d.Y) / 3), new Point(d.X, 2 * ((d.Y + c.Y) / 3)), new Point((c.X + d.X) / 2, d.Y), new Point(c.X, 2 * ((d.Y + c.Y) / 3)), new Point(c.X, ((d.Y + c.Y) / 3)));
            var     fa = new ConvexPolygon(new Point((c.X + d.X) / 2 + 40, c.Y), new Point(d.X + 40, (c.Y + d.Y) / 3), new Point(d.X + 40, 2 * ((d.Y + c.Y) / 3)), new Point((c.X + d.X) / 2 + 40, d.Y), new Point(c.X + 40, 2 * ((d.Y + c.Y) / 3)), new Point(c.X + 40, ((d.Y + c.Y) / 3)));
            //var f = new ConvexPolygon(new Point(c.X, c.Y), new Point(d.X, c.Y), new Point(d.X, d.Y), new Point(c.X, d.Y));

            //var f = new ConvexPolygon(new Point(40,40), new Point(70,40), new Point(70,70), new Point(40,70));
            //b = new Segment(30,50,40,50);

            var x  = Intersect.GetIntersection(b, f);// var y = Intersect.GetIntersection(f);
            var xx = Intersect.GetIntersection(b, fa);

            if (x.Count + xx.Count > 0)
            {
                return(new DrawableSet(new List <IDrawable>()
                {
                    new PointSet(x.Concat(xx).ToArray()),
                    new SegmentSet(b),
                    new PolygonSet(f, fa),
                    DrawableElement.Text(0, 0, "Vse horosho")
                }));
            }
            else
            {
                return(new DrawableSet(new List <IDrawable>()
                {
                    new PointSet(x.Concat(xx).ToArray()),
                    new SegmentSet(b),
                    new PolygonSet(f, fa),
                    DrawableElement.Text(0, 0, "Vse ploho")
                }));
            }
            //return new PointSet(x.ToArray());
        }
Exemple #20
0
        private /*IDrawable*/ Port GetTestInput()
        {
            var p = new Port(new VisualSettings("A", color: "Green", transformer: new TranslateTransformer(10, 20)));

            IDrawable input, output;

            try
            {
                if (SelectedInputMode == InputCreationMode.AutoGeneration)
                {
                    input = SelectedTest.MetaData.MakeInput(null, _currentTestNumber);
                }
                else if (SelectedInputMode == InputCreationMode.FromFile)
                {
                    string filename = FileNames[_currentTestNumber - 1];
                    input = SelectedTest.MetaData.FileReader(filename);
                }
                else
                {
                    return(null);
                }
            }
            catch (Exception e)
            {
                throw new Exception("There was an error during input creation", e);
            }

            input.PopulatePort(p, "Input."); p.Update();
            try
            {
                output = SelectedTest.RunMethod(input);
                output.PopulatePort(p, "Output."); p.Update();
            }
            catch (Exception e)
            {
                //throw new Exception("There was an error during alogorithm invocation", e);
                p["Error"].Populate(
                    DrawableElement.Text(20, 20, "There was an error during alogorithm invocation\n",
                                         "Error messaage was:", "\t" + e.Message,
                                         "\nStackTrace was:", "\t" + e.StackTrace)
                    );
            }

            return(p);
        }
Exemple #21
0
        public void PopulatePort(Port port, string prefix)
        {
            // Form a list of DrawableElement's
            List <DrawableElement> list    = new List <DrawableElement>();
            List <string>          strings = new List <string>();

            foreach (var s in pts)
            {
                list.Add(DrawableElement.Point(s.X, s.Y, "A", "x:" + s.X + " y:" + s.Y));
                strings.Add("x:" + s.X + " y:" + s.Y);
            }

            // To a port's chart named "prefix+..." add a list of DrawableElement's
            port[prefix + "Point"].Populate(list);
            port[prefix + "Text"].Populate(DrawableElement.Text(40, 40, strings.ToArray()));
            port[prefix + "Point"].Settings.Color = "Black";
            //port.Settings.Transformer = new ChainTransformer(new ScaleTransformer(0.3, -0.3), new TranslateTransformer(50, 200));
        }
Exemple #22
0
        public int AddChild(DrawableElement child)
        {
            /// 既に子供なら終了
            if (Children.ContainsValue(child))
            {
                //todo
                return(Children.IndexOfValue(child));
            }

            /// 追加する子供のkeyを決定する
            var key = Children.Any() ? Children.Keys.Max() + Increment : Start;

            child.Parent = this;

            Children.Add(key, child);

            return(key);
        }
        public DrawableElement CreateDrawableElement(bool initializing)
        {
            DrawableElement drawableElement;

            lock (_lockObject)
            {
                drawableElement = new DrawableElement(initializing, OnEndInitializing);

                if (initializing)
                {
                    _initializingDrawables.Add(drawableElement);
                }
                else
                {
                    _allDrawables.Add(drawableElement);
                }
            }

            return(drawableElement);
        }
Exemple #24
0
        public void PopulatePort(Port port, string prefix)
        {
            // Form a list of DrawableElement's
            List <DrawableElement> list    = new List <DrawableElement>();
            List <string>          strings = new List <string>();

            foreach (var s in polts)
            {
                List <double> newConPol = new List <double>();
                foreach (var d in s.Points)
                {
                    newConPol.Add(d.X);
                    newConPol.Add(d.Y);
                }
                list.Add(DrawableElement.Polygon(newConPol));
                //strings.Add("x:" + s.X + " y:" + s.Y);
            }
            port[prefix + "ConPol"].Populate(list);
            //port[prefix + "Text"].Populate(DrawableElement.Text(40, 40, strings.ToArray()));
            port[prefix + "ConPol"].Settings.Color = "Black";
            port.Settings.Transformer = new ChainTransformer(new ScaleTransformer(0.3, -0.3),
                                                             new TranslateTransformer(50, 200));
        }
Exemple #25
0
        public void RemoveChild(DrawableElement child)
        {
            /// 子供に存在しないなら終了
            if (!Children.ContainsValue(child))
            {
                return;
            }

            /// 子供削除
            var children = Children;

            children
            .Where(pair =>
            {
                if (pair.Value != child)
                {
                    return(false);
                }
                child.Parent = null;
                return(true);
            })
            .ForEach((pair => RemoveChild(pair.Key)));
        }
Exemple #26
0
        IDrawable run(IDrawable input)
        {
            if (!(input is CircleSet))
            {
                throw new Exception("CircleTest. Input is not Circles.");
            }

            var inp = input as CircleSet;

            Circle a = inp[0];
            Circle b = inp[1];

            bool x = Intersect.IsIntersected(a, b);

            if (x)
            {
                return(DrawableElement.Text(0, 0, "Vse horosho"));
            }
            else
            {
                return(DrawableElement.Text(0, 0, "Vse ploho"));
            }
        }
Exemple #27
0
 protected bool IsValidForRendering(Camera camera, DrawableElement element)
 {
     return(element.IsActive && camera.Frustum.Contains(element.BoundingBox) != ContainmentType.Disjoint);
 }
Exemple #28
0
 private void DrawElement(Camera camera, DrawableElement element, float yRotationForBillboards)
 {
     DrawElement(camera, element, SceneEffect, yRotationForBillboards);
 }
Exemple #29
0
 protected bool IsValidForRendering(Camera camera, DrawableElement element)
 {
     return element.IsActive && camera.Frustum.Contains(element.BoundingBox) != ContainmentType.Disjoint;
 }
 internal DrawableElementProxy(DrawableElement element)
 {
     this.DrawableElement = element;
 }
 public override void OnComponentRemove()
 {
     GameInstance.GetService <SceneRenderer>().RemoveDrawableElement(_drawableElement);
     _drawableElement = null;
 }
Exemple #32
0
 private void DrawElement(Camera camera, DrawableElement element, float yRotationForBillboards)
 {
     DrawElement(camera, element, SceneEffect, yRotationForBillboards);
 }
Exemple #33
0
 public void ShowElement(DrawableElement element)
 {
     mDocView.mDbView.ShowElement(element);
 }
 private void OnEndInitializing(DrawableElement element)
 {
     lock (_lockObject)
     {
         if (_initializingDrawables.Remove(element))
         {
             _allDrawables.Add(element);
         }
     }
 }
 public void RemoveDrawableElement(DrawableElement element)
 {
     lock (_lockObject)
     {
         if (!_initializingDrawables.Remove(element)) _allDrawables.Remove(element);
     }
 }
        public DrawableElement CreateDrawableElement(bool initializing, int cameraMask = 1)
        {
            DrawableElement drawableElement;

            lock (_lockObject)
            {
                drawableElement = new DrawableElement(cameraMask, initializing, OnEndInitializing);

                if (initializing)
                {
                    _initializingDrawables.Add(drawableElement);
                }
                else
                {
                    _allDrawables.Add(drawableElement);
                }
            }

            return drawableElement;
        }