コード例 #1
0
        private void UploadButtonOnClick(Button obj)
        {
            var req = JesusWebRequest.Post(ServerUrl.Url + "Model", _formData);

            req.Send();
            //var resp = req.GetResponse();
        }
コード例 #2
0
        protected override void OnLoaded()
        {
            var req = new JesusWebRequest(ServerUrl.Url, "Model/List");

            req.SendWait();
            var resp = req.GetResponse <List <Model> >();

            if (resp == null)
            {
                return;
            }
            foreach (var model in resp)
            {
                var button = new Button {
                    Content = string.Join(" - ", new [] {
                        model.Id + "",
                        model.Name,
                        model.ModelCreator.Name
                    }),
                    Data = model
                };
                button.Click += ModelButtonClick;
                _modelsList.Children.Add(button);
            }
        }
コード例 #3
0
        private void ModelButtonClick(Button button)
        {
            var data = (Model)button.Data;
            var req  = new JesusWebRequest(ServerUrl.Url, "Model/Detail?id=" + data.Id);

            req.SendWait();
            var jsonData = req.GetResponsePart <ResponseJsonModel>("JsonData");
            var meshData = req.GetResponsePart <Stream>("ModelData");

            if (jsonData == null)
            {
                Debug.LogError("Response json is null");
                return;
            }

            if (meshData == null)
            {
                Debug.LogError("Response mesh is null");
                return;
            }

            var mesh = UnityBinaryMesh.GetMesh(meshData);

            mesh.name = "FromServer: " + data.ModelFile.Id + (data.Name != null ? " - " + data.Name : "");

            var newGo = new GameObject(mesh.name);
            //	Func<UnityEngine.Material> getNewMat = () => new UnityEngine.Material(Shader.Find("IdMei/WorldSpaceMix"));
            Func <UnityEngine.Material> getNewMat = () => new UnityEngine.Material(Shader.Find("Standard"));
            var matList = new List <UnityEngine.Material>();

            for (int i = 0; i < jsonData.Submeshes.Count; i++)
            {
                var subMesh  = jsonData.Submeshes[i];
                var material = jsonData.Materials[i];
                var newMat   = getNewMat();

                // transfer properties

                matList.Add(newMat);
            }


            newGo.AddComponent <MeshRenderer>().materials = matList.ToArray();
            newGo.AddComponent <MeshFilter>().mesh        = mesh;
            Undo.RegisterCreatedObjectUndo(newGo, "Object download");
            Selection.objects = new Object[] { newGo };
        }
コード例 #4
0
        private void SubmitTags()
        {
            var tags = _tagsWrapper.Children.OfType <TagField>().Where(p => p.Tag != null).ToArray();

            var newTags     = tags.Where(p => p.Tag != null && p.Tag.Id == 0).Select(p => new { p.Tag.Name, p.Tag.ChineseName });
            var changedTags = (
                from tagElm in tags
                let tag = tagElm.Tag
                          let dbTags = (
                    from dbTag in _materialTagsDb
                    where dbTag.Id == tag.Id &&
                    (
                        dbTag.Name != tag.Name || dbTag.ChineseName != tag.ChineseName
                    )
                    select dbTag
                    )
                                       where tagElm.Tag != null &&
                                       tag.Id > 0 &&
                                       tagElm.Delete == false &&
                                       dbTags.Any()
                                       select tag
                );
            var deletedTags = tags.Where(p => p.Tag != null && p.Delete).Select(p => p.Tag.Id);

            if (newTags.Any() == false && changedTags.Any() == false && deletedTags.Any() == false)
            {
                return;
            }

            var user = Login.GetGlobal();

            var req = JesusWebRequest.Post(TagsUrl, new {
                NewTags     = newTags,
                ChangedTags = changedTags,
                DeletedTags = deletedTags,
                UserName    = user.Username,
                Password    = Crc32.Checksum(user.Password)
            });

            req.SendWait();
            var resp = req.GetResponse <TagsResponse>();

            if (resp.Error)
            {
                Debug.LogError("Error in webserver response");
            }


            var ids = resp.NewIds.GetEnumerator();

            foreach (var tag in tags.Where(p => p.Tag != null && p.Tag.Id == 0))
            {
                ids.MoveNext();
                if (ids.Current != null)
                {
                    tag.Tag.Id = (int)ids.Current;
                }
            }

            _tagsWrapper.Children.RemoveAll(p => ((TagField)p).Delete);
            _materialTagsDb = tags.Select(p => p.Tag).Select(p => new MaterialTag {
                Id = p.Id, Name = p.Name, ChineseName = p.ChineseName
            }).ToList();
        }