///<summary> /// Parse and add a separator to attributes["separators"] and instantiate it. ///</summary> ///<param name="_input">The startPos and endPos of the new separator</param> public void AddSeparator(string _input) { if (!Regex.IsMatch(_input, "\\[[0-9.]+,[0-9.]+\\]@\\[[0-9.]+,[0-9.]+\\]")) { GameManager.gm.AppendLogLine("Syntax error", true, eLogtype.error); return; } string[] data = _input.Split('@'); Vector2 startPos = Utils.ParseVector2(data[0]); Vector2 endPos = Utils.ParseVector2(data[1]); ReadFromJson.SSeparator separator = new ReadFromJson.SSeparator { startPosXYm = new float[] { startPos.x, startPos.y }, endPosXYm = new float[] { endPos.x, endPos.y } }; AddSeparator(separator); }
///<summary> /// Add a separator to attributes["separators"] and instantiate it. ///</summary> ///<param name="_input">The separator data to add</param> public void AddSeparator(ReadFromJson.SSeparator _sep) { List <ReadFromJson.SSeparator> separators; if (attributes.ContainsKey("separators")) { separators = JsonConvert.DeserializeObject <List <ReadFromJson.SSeparator> >(attributes["separators"]); } else { separators = new List <ReadFromJson.SSeparator>(); } separators.Add(_sep); attributes["separators"] = JsonConvert.SerializeObject(separators); Vector2 startPos = new Vector2(_sep.startPosXYm[0], _sep.startPosXYm[1]); Vector2 endPos = new Vector2(_sep.endPosXYm[0], _sep.endPosXYm[1]); float length = Vector2.Distance(startPos, endPos); float height = walls.GetChild(0).localScale.y; float angle = Vector3.SignedAngle(Vector3.right, endPos - startPos, Vector3.up); GameObject separator = Instantiate(GameManager.gm.separatorModel); separator.transform.parent = walls; // Set textured box separator.transform.GetChild(0).localScale = new Vector3(length, height, 0.001f); separator.transform.GetChild(0).localPosition = new Vector3(length, height, 0) / 2; Renderer rend = separator.transform.GetChild(0).GetComponent <Renderer>(); rend.material.mainTextureScale = new Vector2(length, height) * 1.5f; // Place the separator in the right place Vector3 roomScale = technicalZone.localScale * -5; separator.transform.localPosition = new Vector3(roomScale.x, 0, roomScale.z); // Apply wanted transform separator.transform.localPosition += new Vector3(startPos.x, 0, startPos.y); separator.transform.localEulerAngles = new Vector3(0, -angle, 0); }