Пример #1
0
    public void Execute(string input, ref CGAContext context)
    {
        string            ax     = ParsingHelper.QSString(input);
        ExtrudeAxis       sa     = (ExtrudeAxis)Enum.Parse(typeof(ExtrudeAxis), ax);;
        string            target = ParsingHelper.GetTarget(input);
        List <GameObject> t      = null;

        if (!string.IsNullOrEmpty(target) && context.namedObjects.ContainsKey(target))
        {
            t = context.namedObjects[target];
            foreach (GameObject g in t)
            {
                switch (sa)
                {
                case ExtrudeAxis.X:
                    break;

                case ExtrudeAxis.Y:
                    break;

                case ExtrudeAxis.Z:
                    break;
                }
            }
        }
        else
        {
            Debug.LogWarning("Cannot extrude without any target");
            return;
        }
    }
Пример #2
0
        public Chart BillChart()
        {
            var context = new CGAContext();
            var CountM  = context.report.SqlQuery("Select * from report where vu=1").Count();
            var CountF  = context.report.SqlQuery("Select * from report where vu=0").Count();

            return(new Chart(width: 466, height: 500).AddSeries(chartType: "pie", xValue: new[] { CountM + " Archivée(s)", CountF + " Non Vu(s)" }, yValues: new[] { CountM, CountF }).Write("png"));
        }
Пример #3
0
        public ActionResult Chart()
        {
            var context = new CGAContext();
            var CountN  = context.vehicleswreck.SqlQuery("Select * from vehiclewreck where couleur='red'").Count();
            var CountT  = context.vehicleswreck.SqlQuery("Select * from vehiclewreck where couleur='blue'").Count();

            new Chart(width: 800, height: 200).AddSeries(chartType: "pie", xValue: new[] { "red vehicle", "blue vehicle " }, yValues: new[] { CountT, CountN }).Write("jpg");
            return(View("Chart"));
        }
Пример #4
0
        public ActionResult BillChart()
        {
            var context = new CGAContext();
            var CountM  = context.users.SqlQuery("Select * from users where gender='Male'").Count();
            var CountF  = context.users.SqlQuery("Select * from users where gender='Female'").Count();

            new Chart(width: 800, height: 200).AddSeries(chartType: "pie", xValue: new[] { "Male", "Female" }, yValues: new[] { CountM, CountF }).Write("png");
            return(View());
        }
Пример #5
0
 public void Execute(string input, ref CGAContext context)
 {
     if (input == "[")
     {
         context.stack.Push(context.current);
     }
     else if (input == "]")
     {
         if (context.stack != null && context.stack.Count > 0)
         {
             context.current = context.stack.Pop();
         }
     }
 }
Пример #6
0
 public void Process(List <string> processedInputs)
 {
     CleanScene();
     context         = new CGAContext();
     context.current = new CGATransform {
         position = Vector3.zero, rotation = Quaternion.identity, scale = Vector3.one
     };
     context.root         = root.transform;
     context.namedObjects = new Dictionary <string, List <GameObject> >();
     context.stack        = new Stack <CGATransform>();
     context.material     = mat;
     context.roofMat      = matR;
     context.windMat      = matW;
     ProcessInput(processedInputs);
     FocusCameraOnGameObject(Camera.main, root);
 }
Пример #7
0
    public void Execute(string input, ref CGAContext context)
    {
        string            target = ParsingHelper.GetTarget(input);
        List <GameObject> t      = null;

        if (!string.IsNullOrEmpty(target) && context.namedObjects.ContainsKey(target))
        {
            t = context.namedObjects[target];
        }
        Vector3 r = ParsingHelper.CSVector3(input);

        if (t == null)
        {
            context.current.position += r;
        }
        else
        {
            foreach (GameObject g in t)
            {
                g.transform.localPosition += r;
            }
        }
    }
Пример #8
0
 public DatabaseFactory()
 {
     dataContext = new CGAContext();
 }
Пример #9
0
    public void Execute(string input, ref CGAContext context)
    {
        string primitive = ParsingHelper.QSString(input);

        string            target      = ParsingHelper.GetTarget(input);
        List <GameObject> targetRoots = null;

        if (!string.IsNullOrEmpty(target) && context.namedObjects.ContainsKey(target))
        {
            targetRoots = context.namedObjects[target];
        }

        string[] destinations = ParsingHelper.GetDest(input);

        foreach (InstantiateOption option in options)
        {
            if (option.name == primitive)
            {
                if (targetRoots == null)
                {
                    GameObject ig = InstantiateCorrect(option.primitive, option);
                    ig.transform.SetParent(context.root);
                    ig.transform.localPosition = context.current.position;

                    if (option.primitive == CGAPrimitive.Cube)
                    {
                        ig.transform.localPosition += new Vector3(0, context.current.scale.y / 2, 0);
                    }
                    else
                    {
                        ig.transform.localPosition += new Vector3(0, context.current.scale.y, 0);
                    }

                    ig.transform.localRotation = context.current.rotation;
                    ig.transform.localScale    = context.current.scale;

                    if (destinations.Length > 0)
                    {
                        if (context.namedObjects.ContainsKey(destinations[0]))
                        {
                            context.namedObjects[destinations[0]].Add(ig);
                        }
                        else
                        {
                            List <GameObject> gol = new List <GameObject>();
                            gol.Add(ig);
                            context.namedObjects.Add(destinations[0], gol);
                        }
                        ig.name = destinations[0];
                    }
                    ig.GetComponent <Renderer>().material = context.material;
                }
                else
                {
                    foreach (GameObject tr in targetRoots)
                    {
                        GameObject ig = InstantiateCorrect(option.primitive, option);
                        ig.transform.SetParent(tr.transform);
                        ig.transform.localPosition = Vector3.zero;
                        ig.transform.localRotation = Quaternion.identity;
                        ig.transform.localScale    = Vector3.one;

                        if (destinations.Length > 0)
                        {
                            if (context.namedObjects.ContainsKey(destinations[0]))
                            {
                                context.namedObjects[destinations[0]].Add(ig);
                            }
                            else
                            {
                                List <GameObject> gol = new List <GameObject>();
                                gol.Add(ig);
                                context.namedObjects.Add(destinations[0], gol);
                            }
                            ig.name = destinations[0];
                        }
                        if (option.primitive == CGAPrimitive.Roof)
                        {
                            ig.GetComponentInChildren <Renderer>().material = context.roofMat;
                        }
                        else if (option.primitive == CGAPrimitive.Window)
                        {
                            ig.GetComponentInChildren <Renderer>().material = context.windMat;
                        }
                        else
                        {
                            ig.GetComponent <Renderer>().material = context.material;
                        }
                    }
                }
            }
        }
    }
Пример #10
0
    public void Execute(string input, ref CGAContext context)
    {
        string    ax = ParsingHelper.QSString(input);
        SplitAxis sa = (SplitAxis)Enum.Parse(typeof(SplitAxis), ax);;

        string target = ParsingHelper.GetTarget(input);

        string[]          destinations = ParsingHelper.GetDest(input);
        CSF               csfVals      = ParsingHelper.CSFValues(input);
        List <GameObject> t            = null;


        if (!string.IsNullOrEmpty(target) && context.namedObjects.ContainsKey(target))
        {
            t = context.namedObjects[target];
            List <GameObject> newNamedObjectContent = new List <GameObject>();
            Vector3           a = new Vector3(1, 0, 0);


            foreach (GameObject g in t)
            {
                GameObject newg = GameObject.Instantiate(g);
                newg.name = g.name;
                GameObject.Destroy(newg.GetComponent <MeshRenderer>());
                GameObject.Destroy(newg.GetComponent <MeshFilter>());
                newNamedObjectContent.Add(newg);
                newg.transform.SetParent(g.transform.parent);
                newg.transform.localScale    = g.transform.localScale;
                newg.transform.localPosition = g.transform.localPosition;
                newg.transform.localRotation = g.transform.localRotation;

                Transform[] trans = g.GetComponentsInChildren <Transform>();
                foreach (Transform tra in trans)
                {
                    if (tra.gameObject != g)
                    {
                        GameObject.Destroy(tra.gameObject);
                    }
                }

                GameObject tar   = g;
                Vector3    start = g.transform.position + g.transform.lossyScale / 2;
                int        s     = csfVals.orderedCSF.Count;
                float      size  = 0;

                switch (sa)
                {
                case SplitAxis.X:
                    a    = -g.transform.right;
                    size = g.transform.lossyScale.x;
                    break;

                case SplitAxis.Y:
                    a    = -g.transform.up;
                    size = g.transform.lossyScale.y;
                    break;

                case SplitAxis.Z:
                    a    = -g.transform.forward;
                    size = g.transform.lossyScale.z;
                    break;
                }

                List <float> sizes         = new List <float>();
                float        sizeOfDynamic = size;
                float        perc          = 0;

                foreach (float v in csfVals.fixedValues)
                {
                    sizeOfDynamic -= (size * v);
                    perc          += v;
                }
                if (perc > 1)
                {
                    Debug.LogWarning("You messed up something with percentages...");
                }

                int relativeCount = 0;
                foreach (int v in csfVals.relativeValues)
                {
                    relativeCount += v;
                }

                float             acumulatedPosition = 0;
                List <GameObject> splits             = new List <GameObject>();

                for (int i = 1; i < s; i++)
                {
                    if (csfVals.orderedCSF[i - 1].isRelative)
                    {
                        acumulatedPosition += (csfVals.relativeValues[csfVals.orderedCSF[i - 1].index] / (relativeCount * 1.0f)) * sizeOfDynamic;
                    }
                    else
                    {
                        acumulatedPosition += csfVals.fixedValues[csfVals.orderedCSF[i - 1].index] * size;
                    }
                    GameObject[] splited = MeshCut.Cut(tar, start + a * acumulatedPosition, a, tar.GetComponent <Renderer>().material); //((size/s) * i)
                    tar = splited[1];
                    if (destinations != null && destinations.Length > i)
                    {
                        string name = destinations[i - 1];
                        splited[0].name = name;
                        if (context.namedObjects.ContainsKey(name))
                        {
                            context.namedObjects[name].Add(splited[0]);
                        }
                        else
                        {
                            context.namedObjects.Add(name, new List <GameObject>()
                            {
                                splited[0]
                            });
                        }
                    }

                    splited[0].transform.SetParent(newg.transform);
                    splited[0].transform.localScale = Vector3.one;

                    splited[1].transform.SetParent(newg.transform);
                    splited[1].transform.localScale = Vector3.one;
                    if (destinations != null && destinations.Length > i && i == s - 1)
                    {
                        string name = destinations[i];
                        splited[1].name = name;
                        if (context.namedObjects.ContainsKey(name))
                        {
                            context.namedObjects[name].Add(splited[1]);
                        }
                        else
                        {
                            context.namedObjects.Add(name, new List <GameObject>()
                            {
                                splited[1]
                            });
                        }
                    }

                    if (i != s - 1)
                    {
                        splits.Add(splited[0]);
                    }
                    else
                    {
                        splits.Add(splited[0]);
                        splits.Add(splited[1]);
                    }
                }

                foreach (GameObject sgo in splits)
                {
                    MeshCut.UpdatePivot(sgo);
                }

                //Rebuild dict!
                context.namedObjects[target] = newNamedObjectContent;
            }
        }
        else
        {
            Debug.LogWarning("Cannot split without any target");
            return;
        }
    }
Пример #11
0
 public UnitOfWork(IDatabaseFactory dbFactory)
 {
     this.dbFactory = dbFactory;
     dataContext    = dbFactory.DataContext;
 }