Ejemplo n.º 1
0
        public async Task <Response> CreateResponse(string pathWithoutParams)
        {
            Response response = null;

            if (pathWithoutParams.StartsWith("/json/hierarchy"))
            {
                await TaskSwitcher.SwitchToMainThread();

                _sceneHierarchyData = HierarchyTools.GetHierarchyActiveScene();
                response            = new HierarchyResponse(_sceneHierarchyData);
            }
            else if (pathWithoutParams.StartsWith("/action"))
            {
                response = new ActionResponse();
            }
            else if (pathWithoutParams.StartsWith("/gameObjectInfo"))
            {
                response = new GameObjectInfoResponse(_sceneHierarchyData);
            }
            else
            {
                response = new FileGetResponse(_resourceFileStorage);
            }

            response?.SetInfo(_context);
            return(response);
        }
Ejemplo n.º 2
0
        public override async Task <ResponseData> MakeResponseData()
        {
            var idString = context.HttpListenerContext.Request.QueryString.Get("id");

            if (string.IsNullOrEmpty(idString))
            {
                throw new Exception("Dont find tag \"id\" in query string");
            }

            var idInt = int.Parse(idString);

            byte[] finalArray = new byte[0];

            if (_sceneHierarchyData == null)
            {
                _sceneHierarchyData = HierarchyTools.GetHierarchyActiveScene();
            }

            if (_sceneHierarchyData.gameobjectsDictonary.TryGetValue(idInt, out GameObject go))
            {
                await TaskSwitcher.SwitchToMainThread();

                Vector3 position = go.transform.position;
                Vector3 rotation = go.transform.rotation.eulerAngles;
                Vector3 scale    = go.transform.localScale;


                GameObjectInfo objectInfo = new GameObjectInfo()
                {
                    activeSelf = go.activeSelf,
                    name       = go.name,
                    position   = position,
                    rotation   = rotation,
                    scale      = scale,
                };

                var json = JsonConvert.SerializeObject(objectInfo, Formatting.Indented, new JsonSerializerSettings()
                {
                    ReferenceLoopHandling = ReferenceLoopHandling.Ignore
                });
                finalArray = ResponseTools.ConvertStringToResponseData(json);

                if (LogToConsoleConfig.IsLogToConsole)
                {
                    Debug.Log(json);
                }
            }
            else
            {
                throw new Exception("Dont find id object " + idInt);
            }

            return(new ResponseData()
            {
                data = finalArray,
            });
        }
Ejemplo n.º 3
0
        public override async Task <ResponseData> MakeResponseData()
        {
            if (_sceneHierarchyData == null)
            {
                _sceneHierarchyData = HierarchyTools.GetHierarchyActiveScene();
            }

            var json = JsonConvert.SerializeObject(_sceneHierarchyData, Formatting.Indented);

            return(new ResponseData()
            {
                data = ResponseTools.ConvertStringToResponseData(json)
            });
        }
Ejemplo n.º 4
0
    public static SceneHierarchyData GetHierarchyByScene(Scene scene)
    {
        SceneHierarchyData sceneHierarchyData = new SceneHierarchyData();

        var           rootObjects = scene.GetRootGameObjects();
        HierarchyNode sceneNode   = new HierarchyNode
        {
            isScene    = true,
            id         = 0,
            pId        = -1,
            gameObject = null,
            name       = scene.name,
            isEnable   = true,
        };

        GetHierarchy(sceneNode, rootObjects, sceneHierarchyData);
        sceneHierarchyData.rootNode = sceneNode;

        return(sceneHierarchyData);
    }
Ejemplo n.º 5
0
 public GameObjectInfoResponse(SceneHierarchyData sceneHierarchyData)
 {
     _sceneHierarchyData = sceneHierarchyData;
 }
Ejemplo n.º 6
0
 public HierarchyResponse(SceneHierarchyData sceneHierarchyData)
 {
     _sceneHierarchyData = sceneHierarchyData;
 }
Ejemplo n.º 7
0
    public static void GetHierarchy(HierarchyNode node, IEnumerable <GameObject> childGameObjects, SceneHierarchyData sceneHierarchyData)
    {
        List <HierarchyNode> childNodes = new List <HierarchyNode>();

        if (childGameObjects != null)
        {
            foreach (var children in childGameObjects)
            {
                sceneHierarchyData.gameobjectsDictonary[children.GetInstanceID()] = children;

                HierarchyNode nodeChild = new HierarchyNode()
                {
                    name       = children.name,
                    gameObject = children.gameObject,
                    id         = children.GetInstanceID(),
                    pId        = node.id,
                    isScene    = false,
                    isEnable   = children.gameObject.activeSelf,
                };

                List <GameObject> childChild = new List <GameObject>();

                for (int i = 0; i < children.transform.childCount; i++)
                {
                    var childTransform = children.transform.GetChild(i);
                    childChild.Add(childTransform.gameObject);
                }

                GetHierarchy(nodeChild, childChild, sceneHierarchyData);
                childNodes.Add(nodeChild);
            }
        }

        if (childNodes.Any())
        {
            node.children = childNodes.ToArray();
        }
        else
        {
            node.children = null;
        }
    }