public void test_can_set_size_from_parent() { var instance = new nBox(); var quad = new nQuad(); quad.Data.Points.Set(new float[8] { 1, 1, 1, 0, 0, 0, 0, 1 }); instance.SetParent(quad.Data); }
private void AddLineSegment(nQuad q, Vector2 start, Vector2 end, float w1, float w2) { var p = new nProp(q); p.Visible = true; p.Listen(_cam, nInputEvent.ENTER, delegate (nPropEvent e) { e.Prop.Color = new Color(1.0f, 1.0f, 0.0f, 0.3f); }); p.Listen(_cam, nInputEvent.EXIT, delegate (nPropEvent e) { e.Prop.Color = new Color(1.0f, 1.0f, 1.0f, 1.0f); }); nStrip.PopulateLineSegment(p.Vertices, start, end, w1, w2); p.PushVertexUpdate(); }
void Start() { var controller = HelloApp.App.Get<HomeController>(); var model = controller.SceneInfo().Model.As<SceneInfoViewModel>(); model.BackButton.Manifest(); _cam = model.Camera; /* load a quad */ _quads[0] = new nQuad(new Vector2(1.0f, 1.0f)); _quads[0].Texture = (Texture) Resources.Load("test.quad.1"); /* create a couple of props from the quad */ _props[0] = new nProp(_quads[0]); _props[0].Visible = true; _props[0].Position = new Vector2(0, 0); _props[0].Listen(_cam, delegate (nProp prop) { nLog.Debug("Got a click on 0!"); }); _props[1] = new nProp(_quads[0]); _props[1].Visible = true; _props[1].Position = new Vector2(2, 0); _props[1].Scale = new Vector2(0.5f, 0.5f); _props[2] = new nProp(_quads[0]); _props[2].Visible = true; _props[2].Position = new Vector2(0, 2); _props[2].Rotation = 45.0f; _props[2].Listen(_cam, delegate (nProp prop) { nLog.Debug("Got a click on 2!"); }); _props[3] = new nProp(_quads[0]); _props[3].Visible = true; _props[3].Position = new Vector2(2, 2); _props[3].Depth = 0; _props[4] = new nProp(_quads[0]); _props[4].Visible = true; _props[4].Position = new Vector2(2.5f, 2.5f); _props[4].Depth = 1; _props[5] = new nProp("test.quad.1", new Vector2(2.0f, 2.0f)); _props[5].Visible = true; _props[5].Position = new Vector2(-3, 0); _props[5].Scale = new Vector2(0.5f, 2.0f); _props[5].Rotation = -15.0f; }
void Start() { var controller = HelloApp.App.Get<HomeController>(); var model = controller.SceneInfo().Model.As<SceneInfoViewModel>(); model.BackButton.Manifest(); _cam = model.Camera; /* load a quad */ _quads[0] = new nQuad(new Vector2(1.0f, 1.0f)); _quads[0].Texture = (Texture) Resources.Load("test.quad.1"); /* create a couple of props from the quad */ _props[0] = new nProp(_quads[0]); _props[0].Visible = true; _props[0].Position = new Vector2(0, 0); _props[0].Listen(_cam, nInputEvent.UP, delegate (nPropEvent prop) { nLog.Debug("Got a click on 0!"); }); _props[1] = new nProp(_quads[0]); _props[1].Visible = true; _props[1].Position = new Vector2(2, 0); _props[1].Scale = new Vector2(0.5f, 0.5f); _props[2] = new nProp(_quads[0]); _props[2].Visible = true; _props[2].Position = new Vector2(0, 2); _props[2].Rotation = 45.0f; _props[2].Listen(_cam, nInputEvent.UP, delegate (nPropEvent prop) { nLog.Debug("Got a click on 2!"); }); _props[3] = new nProp(_quads[0]); _props[3].Visible = true; _props[3].Position = new Vector2(2, 2); _props[3].Depth = 0; _props[4] = new nProp(_quads[0]); _props[4].Visible = true; _props[4].Position = new Vector2(2.5f, 2.5f); _props[4].Depth = 1; _props[5] = new nProp("test.quad.1", new Vector2(2.0f, 2.0f)); _props[5].Visible = true; _props[5].Position = new Vector2(-3, 0); _props[5].Scale = new Vector2(0.5f, 2.0f); _props[5].Rotation = -15.0f; _props[5].Listen(_cam, nInputEvent.ENTER, delegate (nPropEvent e) { e.Prop.Color = new Color(1.0f, 1.0f, 0.0f, 1.0f); }); _props[5].Listen(_cam, nInputEvent.EXIT, delegate (nPropEvent e) { e.Prop.Color = new Color(1.0f, 1.0f, 1.0f, 1.0f); }); /* Load a transparent prop set and make sure transparency overlays work */ var p = new nProp("lovie-foliage", new Vector2(2.0f, 2.0f)); p.Visible = true; p.Position = new Vector2(4.0f, 2.0f); p.Depth = 1; p = new nProp("nujiper-foliage", new Vector2(2.0f, 2.0f)); p.Visible = true; p.Position = new Vector2(4.5f, 2.5f); p.Color = new Color(1.0f, 0.0f, 0.0f, 0.5f); /* load a quad and distort it*/ var q = new nQuad(new Vector2(1.0f, 1.0f)); q.Texture = (Texture) Resources.Load("test.quad.1"); q.Layout[0][0] = 4.0f; q.Layout[0][1] = 4.0f; AddLineSegment(q, new Vector2(-4, -3), new Vector2(-3, -3), 1.0f, 0.8f); AddLineSegment(q, new Vector2(-3, -3), new Vector2(-2, -3), 0.8f, 0.6f); AddLineSegment(q, new Vector2(-2, -3), new Vector2(-1, -3), 0.6f, 0.4f); AddLineSegment(q, new Vector2(-1, -3), new Vector2(0, -3), 0.4f, 0.2f); AddLineSegment(q, new Vector2(0, -3), new Vector2(1, -3), 0.2f, 0.1f); AddLineSegment(q, new Vector2(1, -3), new Vector2(2, -3), 0.1f, 0.05f); AddLineSegment(q, new Vector2(2, -3), new Vector2(3, -3), 0.05f, 0.01f); }
/** Create a series of line segments as props for this and all sub branches */ public void Render(List<nProp> elements, nCamera camera, bool force) { if (_dead) return; if (camera == null) return; /* Do we have a prop for this branch yet? If not, make one */ if ((_display == null) || (force)) { if (_display != null) { _display.Visible = false; _display = null; } if (camera != null) { var t = (Texture)Resources.Load("test.line.3"); var q = new nQuad("Tree", new Vector2(1f, 1f)); q.Texture = t; _display = new nProp(q); _display.Visible = true; _display.Data = this; _display.Depth = 3.0f; _display.ClearEventListeners(camera, nInputEvent.ENTER); _display.ClearEventListeners(camera, nInputEvent.EXIT); _display.Listen(camera, nInputEvent.ENTER, delegate { if (Tree.EditMode) _display.Color = new Color(0f, 1f, 0f, 0.5f); }); _display.Listen(camera, nInputEvent.EXIT, delegate { _display.Color = Color.white; }); _display.Listen(camera, nInputEvent.UP, delegate { if (Tree.EditMode) Hello.HelloApp.App.Get<TreeController>().RemoveBranch(this); }); } } /** Update this to match the actual branch */ var _base = Base; var _tip = Tip; var _parentWidth = Parent != null ? Parent.WidthAtPoint(Offset) : Width; var _baseWidth = _parentWidth < Width ? _parentWidth : Width; // Segments must join up cleanly if (IsSegment) _baseWidth = _parentWidth; var _tipWidth = TipWidth; nStrip.PopulateLineSegment(_display.Vertices, _base, _tip, _baseWidth, _tipWidth); _display.PushVertexUpdate(); /** Collect this */ elements.Add(_display); /** Collect segments */ var segs = new List<bTreeBranch>(); CollectSegments(segs); foreach (var s in segs) { if (s != this) { s.Render(elements, camera, force); } } /** Collect branches */ foreach (var b in Branches) { b.Render(elements, camera, force); } /** Collect leaves */ foreach (var l in Leaves) { l.Render(elements, force); } }
/** Render this leaf and add it to the set of items */ public void Render(List<nProp> elements, bool force) { if (_dead) return; if (!Growing()) return; if ((Display == null) || (force)) { if (Display != null) { Display.Visible = false; Display = null; } var quad = new nQuad("leaf", new Vector2(1.0f, 1.0f)); quad.Texture = Texture; Display = new nProp(quad); Display.Visible = true; Display.Vertices = new Vector3[4] { new Vector3(1.0f, 1.0f, 0f), new Vector3(1.0f, 0f, 0f), new Vector3(0f, 1.0f, 0f), new Vector3(0f, 0f, 0f) }; Display.PushVertexUpdate(); Display.Rotation = Parent.FullAngle + 90f + Angle; Display.Depth = 2.0f; Display.Color = new Color(1f, 1f, 1f, 0.5f); var sSize = 0.05f; var r = new System.Random(); Scatter = new Vector2(sSize * (float)r.NextDouble(), sSize * (float)r.NextDouble()); } var angle = Parent.FullAngle; var o = Offset > Parent.Length ? Parent.Length : Offset; if (o < 0f) o = 0f; float x = (float) Math.Sin(angle * Math.PI / 180) * (Parent.Length - o); float y = (float) Math.Cos(angle * Math.PI / 180) * (Parent.Length - o); var start = Parent.Base + new Vector2(x, y) + Scatter; start[1] += MagicOffset; Display.Scale = new Vector2(Size, Size); Display.Position = start; //var offset = new Vector2(y, -x); //offset.Normalize(); //offset = offset * Size; //var end = start + offset; //nStrip.PopulateLineSegment(Display.Vertices, start, end, Size, Size); //Display.PushVertexUpdate(); }
public nProp(nQuad parent) { _quad = parent; }
public nProp(Texture texture, Vector2 size) { _quad = new nQuad(size); _quad.Texture = texture; }
public nProp(string texture, Vector2 size) { var t = (Texture) Resources.Load(texture); _quad = new nQuad(size); _quad.Texture = t; }