/// <summary> /// Update上で行われる、カメラ以外の操作 /// </summary> private void update_ctrl() { RaycastHit hit; if (Physics.Raycast(mainCamera.ScreenPointToRay(Input.mousePosition), out hit)) { var entity = hit.collider.GetComponent <MapEntity>(); if (entity == null && hit.collider.transform.parent) { entity = hit.collider.transform.parent.GetComponent <MapEntity>(); } if (entity != null && (editingTrack == null ? true : editingTrack.entity && entity.gameObject != editingTrack.entity.gameObject)) { if (focused != entity.obj) { var a = focused; (focused = entity.obj).useSelectingMat = false; if (a != null && a.entity) { if (selectingObjs.Contains(a)) { a.useSelectingMat = true; } a.reloadMaterial(); } focused.reloadMaterial(); } } else { var a = focused; focused = null; if (a != null && a.entity) { if (selectingObjs.Contains(a)) { a.useSelectingMat = true; } a.reloadMaterial(); } } if (mode == ModeEnum.NONE) { point.SetActive(false); if (Input.GetMouseButtonUp(0)) { selectObj(focused); } } else { var p = hit.point; p.y = 0f; if (focused != null) { if (focused is Track) { focusedDist = ((Track)focused).getLength(hit.point); p = ((Track)focused).getPoint(focusedDist = focusedDist <SNAP_DIST && focusedDist <((Track)focused).length / 2f ? 0f : focusedDist> ((Track)focused).length - SNAP_DIST && focusedDist> ((Track)focused).length - ((Track)focused).length / 2f ? 1f : focusedDist / ((Track)focused).length); } else { p = focused.pos; } } point.transform.position = p; point.SetActive(true); if (mode == ModeEnum.CONSTRUCT_TRACK) { if (Input.GetMouseButtonUp(0)) { if (editingTrack != null) { shapeSettingPanel.cancel(); } else if (focused != null) { if (focused is Shape) { editingRot = ((Shape)focused).getRotation(focusedDist); editingTrack = new Shape(playingmap, p); } } else { editingTrack = new Shape(playingmap, p); } if (editingTrack != null) { editingTrack.gauge = gauge; if (editingRot != null) { editingTrack.rot = (Quaternion)editingRot; } editingTrack.enableCollider = false; editingTrack.generate(); shapeSettingPanel.isNew = true; shapeSettingPanel.show(true); setPanelPosToMousePos(shapeSettingPanel); } } else if (Input.GetMouseButtonUp(1)) { shapeSettingPanel.cancel(); } } else if (mode == ModeEnum.PLACE_AXLE) { if (Input.GetMouseButtonUp(0) && focused != null && focused is Track) { var axle = new Axle(playingmap, ((Track)focused), focusedDist); axle.generate(); playingmap.addObject(axle); } } else if (mode == ModeEnum.PLACE_MAPPIN) { if (Input.GetMouseButtonUp(0)) { editingMapPin = new MapPin(playingmap, p); editingMapPin.generate(); mapPinSettingPanel.isNew = true; mapPinSettingPanel.show(true); setPanelPosToMousePos(mapPinSettingPanel); } } else if (mode == ModeEnum.PLACE_STRUCTURE) { if (Input.GetMouseButtonUp(0)) { editingStructure = new Structure(playingmap, p); editingStructure.generate(); structureSettingPanel.isNew = true; structureSettingPanel.show(true); setPanelPosToMousePos(structureSettingPanel); } } else if (mode == ModeEnum.PLACE_STOPTARGET) { if (Input.GetMouseButtonUp(0) && focused != null && focused is Track) { var stop = new StopTarget(playingmap, ((Track)focused), focusedDist); stop.generate(); playingmap.addObject(stop); } } } } else { point.SetActive(false); var a = focused; focused = null; if (a != null && a.entity) { if (selectingObjs.Contains(a)) { a.useSelectingMat = true; } a.reloadMaterial(); } } }