private static void HandleMouseDown(SceneView view, int id, int button) { SceneViewMotion.s_CurrentState = SceneViewMotion.MotionState.kInactive; if (Tools.viewToolActive) { ViewTool viewTool = Tools.viewTool; if (Tools.s_LockedViewTool != viewTool) { Event current = Event.current; GUIUtility.hotControl = id; Tools.s_LockedViewTool = viewTool; SceneViewMotion.s_StartZoom = view.size; SceneViewMotion.s_ZoomSpeed = Mathf.Max(Mathf.Abs(SceneViewMotion.s_StartZoom), 0.3f); SceneViewMotion.s_TotalMotion = 0f; if (view) { view.Focus(); } if (Toolbar.get) { Toolbar.get.Repaint(); } EditorGUIUtility.SetWantsMouseJumping(1); current.Use(); SceneViewMotion.s_CurrentState = SceneViewMotion.MotionState.kActive; GUIUtility.ExitGUI(); } } }
private static void HandleMouseDown(SceneView view, int id, int button) { s_Dragged = false; if (Tools.viewToolActive) { UnityEditor.ViewTool viewTool = Tools.viewTool; if (Tools.s_LockedViewTool != viewTool) { Event current = Event.current; GUIUtility.hotControl = id; Tools.s_LockedViewTool = viewTool; s_StartZoom = view.size; s_ZoomSpeed = Mathf.Max(Mathf.Abs(s_StartZoom), 0.3f); s_TotalMotion = 0f; if (view != null) { view.Focus(); } if (Toolbar.get != null) { Toolbar.get.Repaint(); } EditorGUIUtility.SetWantsMouseJumping(1); current.Use(); GUIUtility.ExitGUI(); } } }
private static void HandleMouseDown(SceneView view, int id, int button) { Event evt = Event.current; // Set up zoom parameters s_StartZoom = view.size; s_ZoomSpeed = Mathf.Max(Mathf.Abs(s_StartZoom), .3f); s_TotalMotion = 0; if (view) { view.Focus(); } if (Toolbar.get) { Toolbar.get.Repaint(); } EditorGUIUtility.SetWantsMouseJumping(1); s_ActiveSceneView = s_CurrentSceneView; if (Tools.s_LockedViewTool == ViewTool.None && Tools.current == Tool.View) { bool controlKeyOnMac = (evt.control && Application.platform == RuntimePlatform.OSXEditor); bool actionKey = EditorGUI.actionKey; bool noModifiers = (!actionKey && !controlKeyOnMac && !evt.alt); if (evt.button == 0 && noModifiers) { TemporaryPan(new ShortcutArguments() { stage = ShortcutStage.Begin }); } } }
private static void HandleMouseDown(SceneView view, int id, int button) { SceneViewMotion.s_Dragged = false; if (!Tools.viewToolActive) { return; } ViewTool viewTool = Tools.viewTool; if (Tools.s_LockedViewTool == viewTool) { return; } Event current = Event.current; GUIUtility.hotControl = id; Tools.s_LockedViewTool = viewTool; SceneViewMotion.s_StartZoom = view.size; SceneViewMotion.s_ZoomSpeed = Mathf.Max(Mathf.Abs(SceneViewMotion.s_StartZoom), 0.3f); SceneViewMotion.s_TotalMotion = 0.0f; if ((bool)((Object)view)) { view.Focus(); } if ((bool)((Object)Toolbar.get)) { Toolbar.get.Repaint(); } EditorGUIUtility.SetWantsMouseJumping(1); current.Use(); GUIUtility.ExitGUI(); }
private static void HandleMouseDown(SceneView view, int id, int button) { s_CurrentState = MotionState.kInactive; if (Tools.viewToolActive) { ViewTool wantedViewTool = Tools.viewTool; // Check if we want to lock a view tool if (Tools.s_LockedViewTool != wantedViewTool) { Event evt = Event.current; // Set the hotcontrol and then lock the viewTool (important to set the hotControl AFTER the Tools.viewTool has been evaluated) GUIUtility.hotControl = id; Tools.s_LockedViewTool = wantedViewTool; // Set up zoom parameters s_StartZoom = view.size; s_ZoomSpeed = Mathf.Max(Mathf.Abs(s_StartZoom), .3f); s_TotalMotion = 0; if (view) { view.Focus(); } if (Toolbar.get) { Toolbar.get.Repaint(); } EditorGUIUtility.SetWantsMouseJumping(1); evt.Use(); // we're not dragging yet, but enter this state so we can cleanup correctly s_CurrentState = MotionState.kActive; // This prevents camera from moving back on mousedown... find out why... and write a comment GUIUtility.ExitGUI(); } } }
private static void HandleMouseDown(SceneView view, int id, int button) { SceneViewMotion.s_Dragged = false; if (!Tools.viewToolActive) return; ViewTool viewTool = Tools.viewTool; if (Tools.s_LockedViewTool == viewTool) return; Event current = Event.current; GUIUtility.hotControl = id; Tools.s_LockedViewTool = viewTool; SceneViewMotion.s_StartZoom = view.size; SceneViewMotion.s_ZoomSpeed = Mathf.Max(Mathf.Abs(SceneViewMotion.s_StartZoom), 0.3f); SceneViewMotion.s_TotalMotion = 0.0f; if ((bool) ((Object) view)) view.Focus(); if ((bool) ((Object) Toolbar.get)) Toolbar.get.Repaint(); EditorGUIUtility.SetWantsMouseJumping(1); current.Use(); GUIUtility.ExitGUI(); }
private static void HandleMouseDown(SceneView view, int id, int button) { s_Dragged = false; if (Tools.viewToolActive) { ViewTool viewTool = Tools.viewTool; if (Tools.s_LockedViewTool != viewTool) { Event current = Event.current; GUIUtility.hotControl = id; Tools.s_LockedViewTool = viewTool; s_StartZoom = view.size; s_ZoomSpeed = Mathf.Max(Mathf.Abs(s_StartZoom), 0.3f); s_TotalMotion = 0f; if (view != null) { view.Focus(); } if (Toolbar.get != null) { Toolbar.get.Repaint(); } EditorGUIUtility.SetWantsMouseJumping(1); current.Use(); GUIUtility.ExitGUI(); } } }
// Use this for initialization void Start() { goalMag = goal; endRange = range; zMag = level; heightMag = height; formMag = form; obsMultiplier = obs; colors = new Color[4]; colors[0] = Color.green; colors[1] = Color.cyan; colors[2] = Color.yellow; colors[3] = Color.magenta; string json = ""; using (StreamReader r = new StreamReader(problem)) { json = r.ReadToEnd(); // List<Item> items = JsonConvert.DeserializeObject<List<Item>>(json); } Input2 input = JsonConvert.DeserializeObject <Input2>(json); map = CreateMap(); Vector2[] boundaryPolygon = new Vector2[input.boundary_polygon.Length]; for (int i = 0; i < input.boundary_polygon.Length; i++) { boundaryPolygon[i] = new Vector2(input.boundary_polygon[i][0], input.boundary_polygon[i][1]); } map.boundaryPolygon = boundaryPolygon; Triangulator boundarytr = new Triangulator(boundaryPolygon); int[] boundaryindices = boundarytr.Triangulate(); // Create the Vector3 vertices Vector3[] boundaryvertices = new Vector3[boundaryPolygon.Length]; for (int i = 0; i < boundaryvertices.Length; i++) { boundaryvertices[i] = new Vector3(boundaryPolygon[i].x, boundaryPolygon[i].y, 0.01f); } // Create the mesh Mesh boundarymsh = new Mesh(); boundarymsh.vertices = boundaryvertices; boundarymsh.triangles = boundaryindices; boundarymsh.RecalculateNormals(); boundarymsh.RecalculateBounds(); GameObject boundaryobj = new GameObject(); // Set up game object with mesh; boundaryobj.AddComponent(typeof(MeshRenderer)); MeshFilter filter = boundaryobj.AddComponent(typeof(MeshFilter)) as MeshFilter; filter.mesh = boundarymsh; boundaryobj.transform.parent = camera.transform; boundaryobj.GetComponent <MeshRenderer>().material.SetColor("_Color", Color.cyan); BoxCollider boxCollider = boundaryobj.AddComponent <BoxCollider>(); boxCollider.size = new Vector3(400, 400, 10); boxCollider.center = new Vector3(0, 0, 5); int polygonCnt = 0; numberofGuards = 0; Debug.Log(input.a_max); //Debug.Log(input.polygon["polygon0"] is JArray); //gets length to intialize each array (I know this is incredibly bad practice, but won't be too taxing in the end) int polycount = 0; this.itemcount = 0; foreach (var pair in input.polygon) { if (pair.Key.StartsWith("polygon")) { polycount++; } else if (pair.Key.StartsWith("start_pos")) { numberofGuards++; } else if (pair.Key.StartsWith("item_")) { itemcount++; } } Vector2[][] inputPolygon = new Vector2[polycount][]; //gets each polygon opject Debug.Log(input.polygon); //float[][] buildingpivots = new float[polycount][]; foreach (var pair in input.polygon) //need to add rotation to json { if (pair.Key.StartsWith("polygon")) //checks if name is polygon { Debug.Log(pair.Key); buildingRotations.Add(new Quaternion(0, 0, 0, 0)); float[][] polygon = pair.Value.ToObject <float[][]>(); //extracts float object buildingObjects.Add(GeneratePolygonMesh(polygon, Color.gray)); Vector2[] vertices2D = new Vector2[polygon.Length]; for (int i = 0; i < polygon.Length; i++) { vertices2D[i] = new Vector2(polygon[i][0], polygon[i][1]); //puts float value to vertex } inputPolygon[polygonCnt++] = vertices2D; var tmp = new Vector3(0F, 0F, 0F); for (int i = 0; i < polygon.Length; i++) { tmp[0] += polygon[i][0]; tmp[1] += polygon[i][1]; tmp[2] += polygon[i][2]; } tmp[0] /= polygon.Length; tmp[1] /= polygon.Length; tmp[2] /= polygon.Length; buildingPivots.Add(tmp); } } buildingRotations.Add(new Quaternion(0, 0, 0, 0)); buildingObjects.Add(boundaryobj); buildingPivots.Add(new Vector3(50, 50, 5)); // Create packageObject foreach (var pair in input.polygon) //need to add rotation to json { if (pair.Key.EndsWith("package")) //checks if name is polygon { Debug.Log(pair.Key); float[][] package = pair.Value.ToObject <float[][]>(); //extracts float object packageObject = GeneratePolygonMesh(package, Color.white); packageObject.GetComponent <MeshRenderer>().material = newMaterialRef; break; } } foreach (var pair in input.polygon) //need to add rotation to json { if (pair.Key.EndsWith("_rot")) { var buildnum = pair.Key; int objnum = Int32.Parse(buildnum.Substring(4, 1)); Debug.Log("hyperderp"); Debug.Log(buildnum); Debug.Log(transform.position); float[] rot = pair.Value.ToObject <float[]>(); buildingRotations[objnum] = Quaternion.Euler(rot[0], rot[1], rot[2]); buildingObjects[objnum].transform.rotation = Quaternion.Euler(rot[0], rot[1], rot[2]); Debug.Log(transform.position); //buildingObjects[objnum].transform.Rotate(new Vector3(rot[0], rot[1], rot[2]), Space.Self); /*buildingObjects[objnum].transform.RotateAround(buildingPivots[objnum], transform.right, rot[0]); * * buildingObjects[objnum].transform.RotateAround(buildingPivots[objnum], transform.forward, rot[1]); * buildingObjects[objnum].transform.RotateAround(buildingPivots[objnum], transform.up, rot[2]);*/ } } map.polygons = inputPolygon; //buildingObjects[0].transform.Rotate(new Vector3(45F, 0F, 0F)); //pivot over x, y, z //get start positions of guards. Assumes: //Number of guards = number of start pos //Guard start & end pos arrive in same order //Can throw this into above forloop later (but it's nice to have seperate) float[][] start_positions = new float[numberofGuards][]; int grdID = 0; foreach (var pair in input.polygon) { if (pair.Key.StartsWith("start_pos")) { // Debug.Log(pair.Key + " Number of Guards: " + grdID); var start_pos = pair.Value.ToObject <float[]>(); start_positions[grdID] = start_pos; grdID++; } } float[][] end_positions = new float[numberofGuards][]; grdID = 0; foreach (var pair in input.polygon) { if (pair.Key.StartsWith("goal_pos")) { // Debug.Log(pair.Key + " Number of Guards: " + grdID); var end_pos = pair.Value.ToObject <float[]>(); end_positions[grdID] = end_pos; grdID++; } } foreach (var pair in input.polygon) { if (pair.Key.StartsWith("package_waypoints")) { // Debug.Log(pair.Key + " Number of Guards: " + grdID); float[][] waypoints = pair.Value.ToObject <float[][]>(); foreach (float[] waypoint in waypoints) { Vector3 w = new Vector3(waypoint[0], waypoint[1], waypoint[2]); packageWaypoints.Add(w); formation_sizes.Add(waypoint[3]); Debug.Log("Waypoint: " + w); } } } drone_offset_positions[0] = new Vector3(-formation_sizes[currentCheckpoint] / 2, -formation_sizes[currentCheckpoint] / 2, -1); drone_offset_positions[1] = new Vector3(formation_sizes[currentCheckpoint] / 2, -formation_sizes[currentCheckpoint] / 2, -1); drone_offset_positions[2] = new Vector3(formation_sizes[currentCheckpoint] / 2, formation_sizes[currentCheckpoint] / 2, -1); drone_offset_positions[3] = new Vector3(-formation_sizes[currentCheckpoint] / 2, formation_sizes[currentCheckpoint] / 2, -1); float[][] items = new float[itemcount][]; grdID = 0; foreach (var pair in input.polygon) { if (pair.Key.StartsWith("item_")) { // Debug.Log(pair.Key + " Number of Guards: " + grdID); var item_pos = pair.Value.ToObject <float[]>(); items[grdID] = item_pos; grdID++; } } map.items = items; map.seen = new float[items.Length][]; foreach (var pair in input.polygon) { if (pair.Key.StartsWith("sensor_range")) { map.sensor_range = pair.Value.ToObject <float>(); break; } } //Create players this.point = new Point[numberofGuards]; for (int i = 0; i < numberofGuards; i++) { Debug.Log("Guard Number: " + i); point[i] = CreateAI(); point[i].name = ("Guard" + i); //point[i].useSaved = useSaved; //point[i].startPos = input.start_pos; //need to update for multiple point[i].startPos = start_positions[i]; point[i].transform.position = new Vector3(start_positions[i][0], start_positions[i][1], start_positions[i][2]); //point[i].goalPos = end_positions[i]; Vector3 goalV = drone_offset_positions[i] + packageWaypoints[currentCheckpoint]; point[i].goalPos = new float[] { goalV.x, goalV.y, goalV.z }; point[i].startVel = input.start_vel; point[i].goalVel = input.goal_vel; point[i].MAX_SPEED = input.v_max; point[i].MAX_ACCEL = input.a_max; point[i].MAX_OMEGA = input.omega_max; point[i].MAX_PHI = input.phi_max; point[i].L_CAR = input.L_car; point[i].K_FRICTION = input.k_friction; point[i].guardID = i; point[i].polygons = inputPolygon; point[i].startVel = input.start_vel; point[i].goalVel = input.goal_vel; point[i].boundaryPolygon = boundaryPolygon; point[i].Kp = Kp; point[i].Ki = Ki; point[i].Kd = Kd; Vector3 pos = point[i].transform.position; Vector3 vClosest = new Vector3(100, 100, 100); for (int j = 0; j < buildingObjects.Count; j++) { Vector3 v = buildingObjects[j].GetComponent <BoxCollider>().ClosestPointOnBounds(pos); if (Vector3.Distance(v, pos) < Vector3.Distance(vClosest, pos)) { vClosest = v; } } point[i].closestBuildingPoint = vClosest; } for (int i = 0; i < numberofGuards; i++) { for (int j = 0; j < numberofGuards; j++) { if (j != i) { var x = point[j].goalPos[0] - point[i].goalPos[0]; var y = point[j].goalPos[1] - point[i].goalPos[1]; point[i].formation.Add(new Vector2(x, y)); } } } packagePos = findPackage(); packageSpeed = packagePos; // Power of Cheetah //Cheetah.instance.CreateOrLoad(problem, boundaryPolygon, inputPolygon); if (UnityEditor.SceneView.sceneViews.Count > 0) { UnityEditor.SceneView sceneView = (UnityEditor.SceneView)UnityEditor.SceneView.sceneViews[0]; sceneView.Focus(); } Debug.Break(); }