void mouse() { if(IsMouseOverGui()) { return; } if(Input.GetMouseButtonDown(1)) { // 0 => klik rait BaseLevelThing levelobject = levelscript.LastHoverObject; //LastHoverObject uzsit levelskriptaa katraa kadraa if(levelobject != null && levelobject.GetType().ToString() == "Room" ){ //hoverotais objekts ir telpa Room mightBeGroundCube = (Room)levelobject; if(mightBeGroundCube.FuncType == FuncTypes.ground){ //shii telpa ir zemes kluciitis, shos ignoreejam - neljaujam hoverot levelobject = null; } } if(levelobject != null) { if(levelobject.GetHashCode() == lastLevelobjectLookedAt){ //atkaaroti spiezh labo peli uz vienas telpas, taatad grib izsleegt kverijreezhiimu stopQueryMode(); lastLevelobjectLookedAt = -1; return; } lastLevelobjectLookedAt = levelobject.GetHashCode(); if(!QueryMode) {//ieprieksh nebija kverijrezhiims //pieseivo speeles aatrumu un kameras poziiciju, tikai ja neesam jau iekshaa zuumaa (saglabaaju peedeejos lietotaaja izveeleetos parametrus, pat vairaaku seciigu zuumu gadiijumaa) levelscript.TimeScaleHistoric = levelscript.TimeScale; camerascript.LastUserCamPos = camerascript.transform.position; } else { stopQueryMode(); } QueryMode = true; QueryTarget = levelobject; camerascript.ZoomToRoom(levelobject.transform.position.x, levelobject.transform.position.y - (levelobject.SizeY / 2f) + 1.5f); // centree uz punktu nvieniibas virs griidas levelscript.TimeScale = 0.25f; // paleenina aatrumu } else { if(QueryMode) { //ja nav nekas apskataams un ieprieksh bija , tikai tad ir nepiecieshams noresetot (citaadi noreseto kameras poziiciju, kas vispaar nav uzsetota un ir slikti ) stopQueryMode(); } } } }
void stopQueryMode() { levelscript.emptyPlacer(); QueryMode = false; QueryTarget = null; camerascript.UnZoomFromRoom(); levelscript.TimeScale = levelscript.TimeScaleHistoric; //atjauno aatrumu }
void mouse() { LastHoverObject = null; BaseLevelThing LastHoverRoom = null; BaseLevelThing LastHoverGadget = null; BaseLevelThing LastHoverAgent = null; if(guiscript.IsMouseOverGui()) { //kursors atrodas uz HUDa,nevajag uzbaazties ar saviem kluchiem return; } Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); RaycastHit hit; if(Physics.Raycast(ray, out hit, Mathf.Infinity, 1 << 8)) { // 1<<8 ir 8.slaanja bitmaska - neredzama plakne, kur lipinaat klaati limenobjektus //vieniibas grids int roundUnityX = Mathf.RoundToInt(hit.point.x); int roundUnityY = Mathf.RoundToInt(hit.point.y); LastPosGrid = new Vector3(roundUnityX, roundUnityY, 0); LastPosGridPrecise = new Vector3(hit.point.x, hit.point.y, 0); //decimaalgrids float roundDeciX = Mathf.RoundToInt(hit.point.x / GridDecimalScale) * GridDecimalScale + GridDecimalScale / 2f;// pieskaita offsetu - pus ruutinju - lai atrastos grida ruutinjas viduu float roundDeciY = roundUnityY; // -- pa Y nebuus decimaalgrids - lai liip tikai pa staaviem Mathf.RoundToInt(hit.point.y / GridDecimalScale) * GridDecimalScale + GridDecimalScale / 2f; LastPosDecGrid = new Vector3(roundDeciX, roundDeciY, 0); //PLEISERI pielipina pie taa grida, kaads noraadiits objektaa, kas palshlaik atrodas PLEISERII if(PlacerStickyness == GridStickyness.uniGrid){ placer.transform.position = LastPosGrid; } else if(PlacerStickyness == GridStickyness.deciGrid){ placer.transform.position = LastPosDecGrid; } else { //EEEAAGLE -- neliip pie grida } //peedeejo hoveroto telpu varu viennoziimig atrast peec shiim koordinaateem LastHoverRoom = roomAtThisPosition(roundUnityX,roundUnityY); } //gadhzeta un agjenta atrashanai jaaveic reikaastings if(Physics.Raycast(ray, out hit, Mathf.Infinity, 1 << 10)) { //gadzhetu slaanis LastHoverGadget = hit.transform.gameObject.GetComponent<BaseLevelThing>(); } if(Physics.Raycast(ray, out hit, Mathf.Infinity, 1 << 11)) { //agjentu slaanis LastHoverAgent = hit.transform.gameObject.GetComponent<BaseLevelThing>(); } //atrod svariigaako no hoverotajaam lietaam if(LastHoverAgent != null){ LastHoverObject = LastHoverAgent; } else if(LastHoverGadget != null) { LastHoverObject = LastHoverGadget; } else if(LastHoverRoom != null) { LastHoverObject = LastHoverRoom; } if(Input.GetMouseButtonDown(0)) { // 0 => klik left // print (lastPos); if(guiscript.IsMouseOverGui()) { //kursors atrodas uz HUDa, nevajag ljaut novietot lietas return; } if(objectInPlacer) { //PLEISERII ir ielaadeeds prefabs Transform levelobject = placer.transform.GetChild(0); //pienjemu, ka tikai viens objekts tiek likts vienlaiciigi BaseLevelThing script = levelobject.GetComponent<BaseLevelThing>(); //objekts instanceeets un skriptaa varu apskatiities apreekjinaatos offsetus script.PlaceOnGrid(0); //katrs bloks pats izlems, ko dariit, kad tas tiek klikskshkinaats uz grida (ja bloks tiek novietots, tad tas tiks aizvaakts no PLEISERA) CalculateNavgrid();//kaut kas iespeejams ir mainiijies, jaaparreekjina if(placer.transform.childCount == 0) { objectInPlacer = false; //bloks tika novietots (vai aizvaakts or smnt) un nu PLEISERIS ir tukshss numRooms++; //droshs paliek droshs - palielinaashu skaitiitaaju (pat ja kluciitis netika novietots liimenii) } } } if(Input.GetMouseButtonDown(1)) { //rait emptyPlacer(); } if(Input.GetMouseButtonDown(2)) { // 2 => klik mid print("Uni:" + LastPosGrid + " Deci:" + LastPosDecGrid +" (" + LastPosGridPrecise + ")" ); } }