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)); }
/// <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; } }
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") })); } }
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") })); } }
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); } } }
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(); }
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); }
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); }
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(); } }
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)); }
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); } }
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()); }
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); }
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)); }
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); }
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)); }
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))); }
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")); } }
protected bool IsValidForRendering(Camera camera, DrawableElement element) { return(element.IsActive && camera.Frustum.Contains(element.BoundingBox) != ContainmentType.Disjoint); }
private void DrawElement(Camera camera, DrawableElement element, float yRotationForBillboards) { DrawElement(camera, element, SceneEffect, yRotationForBillboards); }
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; }
public void ShowElement(DrawableElement element) { mDocView.mDbView.ShowElement(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; }