示例#1
0
        public R_PartArray(PartArray partArray)
        {
            PartArray = partArray;
            Parts     = new List <R_PhysicsPart>();

            var numVerts = 0;
            var numPolys = 0;

            for (var i = 0; i < partArray.Parts.Count; i++)
            {
                var physicsPart = partArray.Parts[i];

                // skip anchor locations
                if (partArray.Parts[i].GfxObj.ID == 0x010001ec)
                {
                    continue;
                }

                Parts.Add(new R_PhysicsPart(physicsPart));

                numVerts += physicsPart.GfxObj.VertexArray.Vertices.Count;
                numPolys += physicsPart.GfxObj.Polygons.Count;
            }

            //Console.WriteLine("NumParts: " + Parts.Count);
            //Console.WriteLine("NumVerts: " + numVerts);
            //Console.WriteLine("NumPolys: " + numPolys);

            BuildVertices();
            BuildIndices();

            //SetUpBuffers();
        }
示例#2
0
        /*
         * requ	{"data_count": 1000, "distribution": "normal", "m": 0, "d": 1, "clients":[]}
         */
        public override void Execute(ClientData argument)
        {
            uint  count = argument.data["data_count"].GetValue <uint>();
            IPart hid   = argument.data["clients"];

            argument.data.Data.Remove("clients");

            Task <IPart>[] workers          = new Task <IPart> [hid.Count];
            Client[]       selected_clients = new Client[hid.Count];

            string req = new PartStruct()
                         .Add("cmd", "load")
                         .Add("data", argument.data.Data).ToJSON();
            int index = 0;

            foreach (IPart cli in hid)
            {
                Client currentClient = data.clients[cli.GetValue <string>()];
                selected_clients[index] = currentClient;
                workers[index]          = Task.Factory.StartNew(() => {
                    return(TestForSingleIotClient(currentClient, req, count));
                });
                index++;
            }

            IPart container     = new PartArray();
            IPart sendedMessage = new PartStruct().Add("ok", container);

            Task.WaitAll(workers);
            for (int i = 0; i < workers.Length; i++)
            {
                container.Add(new PartStruct().Add("name", selected_clients[i].ToString()).Add("result", workers[i].Result));
            }
            argument.client.SendMessageAsync(sendedMessage.ToJSON());
        }
示例#3
0
        //{name, groupe}
        public override void Execute(ClientData argument)
        {
            PartArray res = new PartArray();

            IPart ng = null;

            Func <Client, bool> nameReact   = (arg) => true;
            Func <Client, bool> groupeReact = (arg) => true;

            if (argument.data.Data.ByPathSave("name", out ng))
            {
                string targetName = ng.GetValue <string>();
                nameReact = (arg) => arg.Name.Equals(targetName);
            }
            if (argument.data.Data.ByPathSave("groupe", out ng))
            {
                string targetGroupe = ng.GetValue <string>();
                nameReact = (arg) => arg.Groupe.Equals(targetGroupe);
            }

            IEnumerable <KeyValuePair <String, Client> > query = (from cli in data.clients
                                                                  where nameReact(cli.Value) == true &&
                                                                  groupeReact(cli.Value) == true
                                                                  select cli);

            foreach (KeyValuePair <String, Client> client in query)
            {
                res.Add(new PartStruct()
                        .Add("address", String.Format("{0}:{1}", client.Value.Address.Address, client.Value.Address.Port))
                        .Add("name", client.Value.Name)
                        .Add("groupe", client.Value.Groupe)
                        .Add("id", client.Key));
            }
            argument.client.SendMessageAsync(res.ToJSON());
        }
示例#4
0
        public PartArray GetSelectedClients()
        {
            if (selected.Count == 0)
            {
                throw new Exception("nothing to test");
            }
            PartArray res = new PartArray();

            foreach (Client iotClient in selected)
            {
                res.Add(iotClient.HID);
            }
            return(res);
        }