Ejemplo n.º 1
0
    void createChildren()
    {
        float new_radius = appearance.transform.localScale.x * radius_decay;
        float new_length = appearance.transform.localScale.y * length_decay;

        if (new_radius < minimum_radius)
        {
            return;
        }
        branches = new List <LTree>();

        GameObject progenitor = new GameObject();

        progenitor.name                       = "Root for children";
        progenitor.transform.parent           = contents.transform;
        progenitor.transform.localPosition    = new Vector3(0, 0, 0);
        progenitor.transform.localEulerAngles = new Vector3(0, 0, 0);
        Debug.Log("the offset is " + appearance.transform.localPosition.y);
        progenitor.transform.Translate(0, 2 * appearance.transform.localPosition.y, 0);
        int num_children = (int)(UnityEngine.Random.value * (maximum_branches - minimum_branches) + minimum_branches);

        for (int i = 0; i < num_children; i++)
        {
            LTree child = new LTree();
            branches.Add(child);
            child.construct(null, progenitor, new_length, new_radius);
        }
    }
Ejemplo n.º 2
0
        public void LongestCommonAncestor()
        {
            using var ctx = CreateContext();

            var count = ctx.LTreeEntities.Count(l => LTree.LongestCommonAncestor(l.Path, "Top.Hobbies") == "Top");

            Assert.Equal(6, count);
            AssertSql(
                @"SELECT COUNT(*)::INT
FROM ""LTreeEntities"" AS l
WHERE lca(ARRAY[l.""Path"",'Top.Hobbies']::ltree[]) = 'Top'");
        }
Ejemplo n.º 3
0
        public void LTree_contained_by_any_LTree()
        {
            using var ctx = CreateContext();
            var ltrees = new LTree[] { "Top.Science.Astronomy", "Top.Art" };
            var count  = ctx.LTreeEntities.Count(l => ltrees.Any(t => t.IsDescendantOf(l.Path)));

            Assert.Equal(3, count);
            AssertSql(
                @"@__ltrees_0='System.String[]' (DbType = Object)

SELECT COUNT(*)::INT
FROM ""LTreeEntities"" AS l
WHERE @__ltrees_0 <@ l.""Path""");
        }
Ejemplo n.º 4
0
    public void LTree_contains_any_LTree()
    {
        using var ctx = CreateContext();
        var ltrees = new LTree[] { "Top.Science", "Top.Art" };
        var count  = ctx.LTreeEntities.Count(l => ltrees.Any(t => t.IsAncestorOf(l.Path)));

        Assert.Equal(4, count);
        AssertSql(
            @"@__ltrees_0={ 'Top.Science', 'Top.Art' } (DbType = Object)

SELECT count(*)::int
FROM ""LTreeEntities"" AS l
WHERE @__ltrees_0 @> l.""Path""");
    }
Ejemplo n.º 5
0
        public void First_LTree_matches_LTxtQuery()
        {
            using var ctx = CreateContext();

            var ltrees = new LTree[] { "Top.Science.Astronomy.Astrophysics", "Top.Science.Astronomy.Cosmology" };

            _ = ctx.LTreeEntities.Count(_ => ltrees.FirstOrDefault(l => l.MatchesLTxtQuery("Astro*")) == "Top.Science.Astronomy.Astrophysics");

            AssertSql(
                @"@__ltrees_0='System.String[]' (DbType = Object)

SELECT COUNT(*)::INT
FROM ""LTreeEntities"" AS l
WHERE @__ltrees_0 ?@ 'Astro*' = 'Top.Science.Astronomy.Astrophysics'");
        }
Ejemplo n.º 6
0
        public void First_LTree_descendant()
        {
            using var ctx = CreateContext();

            var ltrees = new LTree[] { "Top.Science.Astronomy", "Top.Hobbies.Amateurs_Astronomy" };
            var count  = ctx.LTreeEntities.Count(l => ltrees.FirstOrDefault(l2 => l2.IsDescendantOf(l.Path)) == "Top.Science.Astronomy");

            Assert.Equal(3, count);
            AssertSql(
                @"@__ltrees_0='System.String[]' (DbType = Object)

SELECT COUNT(*)::INT
FROM ""LTreeEntities"" AS l
WHERE @__ltrees_0 ?<@ l.""Path"" = 'Top.Science.Astronomy'");
        }
Ejemplo n.º 7
0
        public void First_LTree_ancestor()
        {
            using var ctx = CreateContext();

            var ltrees = new LTree[] { "Top.Science", "Top.Hobbies" };
            var count  = ctx.LTreeEntities.Count(l => ltrees.FirstOrDefault(l2 => l2.IsAncestorOf(l.Path)) == new LTree("Top.Science"));

            Assert.Equal(4, count);
            AssertSql(
                @"@__ltrees_0='System.String[]' (DbType = Object)

SELECT COUNT(*)::INT
FROM ""LTreeEntities"" AS l
WHERE @__ltrees_0 ?@> l.""Path"" = 'Top.Science'");
        }
Ejemplo n.º 8
0
        public void Any_LTree_matches_LQuery()
        {
            using var ctx = CreateContext();

            var ltrees = new LTree[] { "Top.Science.Astronomy.Astrophysics", "Top.Science.Astronomy.Cosmology" };

            _ = ctx.LTreeEntities.Count(_ => ltrees.Any(t => t.MatchesLQuery("*.Astrophysics")));

            AssertSql(
                @"@__ltrees_0='System.String[]' (DbType = Object)

SELECT COUNT(*)::INT
FROM ""LTreeEntities"" AS l
WHERE @__ltrees_0 ~ '*.Astrophysics'");
        }
Ejemplo n.º 9
0
    public void First_LTree_matches_LQuery()
    {
        using var ctx = CreateContext();

        var ltrees = new LTree[] { "Top.Science.Astronomy.Astrophysics", "Top.Science.Astronomy.Cosmology" };

        _ = ctx.LTreeEntities.Count(_ => ltrees.FirstOrDefault(l => l.MatchesLQuery("*.Astrophysics")) == "Top.Science.Astronomy.Astrophysics");

        AssertSql(
            @"@__ltrees_0={ 'Top.Science.Astronomy.Astrophysics', 'Top.Science.Astronomy.Cosmology' } (DbType = Object)

SELECT count(*)::int
FROM ""LTreeEntities"" AS l
WHERE @__ltrees_0 ?~ '*.Astrophysics' = 'Top.Science.Astronomy.Astrophysics'");
    }
Ejemplo n.º 10
0
    public void Any_LTree_matches_LTxtQuery()
    {
        using var ctx = CreateContext();

        var ltrees = new LTree[] { "Top.Science.Astronomy.Astrophysics", "Top.Science.Astronomy.Cosmology" };

        _ = ctx.LTreeEntities.Count(_ => ltrees.Any(t => t.MatchesLTxtQuery("Astro*")));

        AssertSql(
            @"@__ltrees_0={ 'Top.Science.Astronomy.Astrophysics', 'Top.Science.Astronomy.Cosmology' } (DbType = Object)

SELECT count(*)::int
FROM ""LTreeEntities"" AS l
WHERE @__ltrees_0 @ 'Astro*'");
    }
Ejemplo n.º 11
0
    public void Any_LTree_matches_any_LQuery()
    {
        using var ctx = CreateContext();

        var ltrees   = new LTree[] { "Top.Science.Astronomy.Astrophysics", "Top.Science.Astronomy.Cosmology" };
        var lqueries = new[] { "*.Astrophysics", "*.Geology" };

        _ = ctx.LTreeEntities.Count(_ => ltrees.Any(t => lqueries.Any(q => t.MatchesLQuery(q))));

        AssertSql(
            @"@__ltrees_0={ 'Top.Science.Astronomy.Astrophysics', 'Top.Science.Astronomy.Cosmology' } (DbType = Object)
@__lqueries_1={ '*.Astrophysics', '*.Geology' } (DbType = Object)

SELECT count(*)::int
FROM ""LTreeEntities"" AS l
WHERE @__ltrees_0 ? @__lqueries_1");
    }
Ejemplo n.º 12
0
    void Start()
    {
        rootNode           = new LTree();
        LTree.mCol         = treeCol.col;
        rootNode.mMaterial = treeCol.mat;

        rootNode.construct(transform, null, initial_length, initial_radius);
        //StartCoroutine (rootNode.grow ());
        if (!dontUseTracking)
        {
            mTrackableBehaviour = transform.parent.GetComponent <TrackableBehaviour>();
            if (mTrackableBehaviour)
            {
                mTrackableBehaviour.RegisterTrackableEventHandler(this);
            }
        }
    }
Ejemplo n.º 13
0
        /// <summary>
        /// LoadContent will be called once per game and is the place to load
        /// all of your content.
        /// </summary>
        public void LoadContent(ContentManager Content)
        {
            LTree = Content.Load <Model>("LevelTree");

            Random R = new Random();

            int i = 3;

            foreach (var mesh in LTree.Meshes)
            {
                if (mesh.Name.StartsWith("L"))
                {
                    mesh.Tag = new Color(255, i, 255).ToVector3();
                    i       += 10;
                }
            }

            LTreeTransForms = new Matrix[LTree.Bones.Count];
            LTree.CopyAbsoluteBoneTransformsTo(LTreeTransForms);

            ContentLoaded = true;
        }