public override void OnInspectorGUI() { DrawDefaultInspector(); GUILayout.Space(10); DoorPanel door = (DoorPanel)target; if (!door.Opened) { if (GUILayout.Button("Open Door")) { ((DoorPanel)target).OpenDoor(); } } else { if (GUILayout.Button("Close Door")) { ((DoorPanel)target).OpenDoor(); } } if (GUILayout.Button("Update Opening Door Settings")) { ((DoorPanel)target).UpdateOpeningDirection(); } if (GUILayout.Button("Repeat to Doors of same type")) { Debug.Log("TODO...."); } }
IEnumerator openPanel(DoorPanel p) { if (!isClosing) { isOpening = true; Vector2Int dir = enum2dir(p.OpenDirection); while (p.MaxDistance - Vector3.Distance(p.Panel.transform.position, p.startingPosition) > DISTANCE_OFFSET && isOpening) { p.Panel.transform.Translate(new Vector3(p.OpenSpeed * dir.x, p.OpenSpeed * dir.y)); yield return(0); } print("Finished opening"); isOpening = false; yield return(null); } }
public void UpdateDoorElement(GameObject obj) { ModelObject modelObject = obj.GetComponent <ModelObject>(); if (modelObject.Name.Contains("Double") || modelObject.Name.Contains("Dbl")) { return; } int frameCounting = 0; if (modelObject.HasFrame()) { GameObject frame = new GameObject("Door Frame [" + modelObject.Id + "]"); frame.transform.parent = modelObject.transform; frame.transform.localScale = new Vector3(1, 1, 1); frame.transform.localPosition = new Vector3(0, 0, 0); frame.transform.localRotation = new Quaternion(); frame.AddComponent <MeshFilter>(); frame.AddComponent <MeshCollider>(); frame.AddComponent <MeshRenderer>(); AddFrame(modelObject, frame); frameCounting = 1; } GameObject panel = new GameObject("Door Panel [" + modelObject.Id + "]"); panel.transform.parent = modelObject.transform; panel.transform.localScale = new Vector3(1, 1, 1); panel.transform.localPosition = new Vector3(0, 0, 0); panel.transform.localRotation = new Quaternion(); BoxCollider box = panel.GetComponent <BoxCollider> (); if (box == null) { box = panel.AddComponent <BoxCollider> (); } box.isTrigger = true; box.size = new Vector3(1, 1, 2); //box.center = new Vector3 (0, 0, 0); for (int i = 0 + frameCounting; i < modelObject.GetComponent <MeshFilter>().sharedMesh.subMeshCount; i++) { AddComponentDoorPanel(modelObject, panel, i); } DoorPanel doorPanel = panel.GetComponent <DoorPanel>(); if (doorPanel == null) { doorPanel = panel.AddComponent <DoorPanel>(); } modelObject.GetComponent <MeshRenderer>().enabled = false; modelObject.GetComponent <MeshCollider>().enabled = false; doorPanel.UpdateOpeningDirection(); if (panel.GetComponent <DoorScript> () == null) { panel.AddComponent <DoorScript> (); } }