Example #1
0
        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);
              }
        }
Example #6
0
        /** 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;
 }