public void GenerateMesh() { CaveManager cmanager = GameObject.FindGameObjectWithTag("CaveManager").GetComponent <CaveManager> (); int m_lengthRes = cmanager.GetDivRes(); int m_ribRes = cmanager.GetRoundRes(); m_DivScales = new List <float> (); for (int i = 0; i < m_lengthRes; ++i) { m_DivScales.Add(3); } // Add the now set mesh to the game object as a meshfilter gameObject.AddComponent <MeshFilter> ().mesh = new Mesh(); // Add and set up the new mesh renderer gameObject.AddComponent <MeshRenderer>().material = cmanager.m_caveMaterial; // Add a mesh collider used for raycast testing gameObject.AddComponent <MeshCollider>(); UpdateMesh(m_lengthRes, m_ribRes); GenerateTriangles(m_lengthRes, m_ribRes); // Add a mesh collider used for raycast testing GetComponent <MeshCollider>().sharedMesh = GetComponent <MeshFilter> ().mesh; }
void DecideAction() { Debug.Log("AAA"); Touch touch = Input.GetTouch(0); if (touch.phase == TouchPhase.Began) { Debug.Log(Time.time); StillTouch = true; StartCoroutine(DecideLongTouch()); } if (touch.phase == TouchPhase.Stationary) { if (NowAssignIsland) { CaveManager cavemanager = FindObjectsOfType <CaveManager>()[0].GetComponent <CaveManager>(); cavemanager.PetOnIsland(Petnum); } } if (touch.phase == TouchPhase.Ended) { if (!NowAssignIsland) { petview.WatchPet(Petnum); PetViewPanel.SetActive(true); CaveViewCanvas.SetActive(false); } StillTouch = false; NowAssignIsland = false; } }
public void tunnelFrom(CaveBody body, Vector3 dir) { CaveManager.tunnels.Add(this); GameObject digObj = CaveManager.getNewDigger(); digObj.transform.localScale = new Vector3(1, 1, 1); digger = digObj.GetComponent <Digger>(); digger.init(this); digger.colID = body.centerColumnID; digger.tier = body.tier + 1; digger.layer = body.centerDepth + 2; destDepth = body.centerDepth + tunnelDepth; digger.neighbourCount = 0; digger.transform.position = Vector3.zero; digger.setScale(tunnelSize); digger.gradient = 2; direction = dir; digger.right = Vector3.Cross(direction, -MapManager.manager.getPositionOf(0, body.centerColumnID)).normalized; digger.travelDir = direction.normalized; //Debug.Log("creating new digger with dir = " + digger.travelDir + " right = " + digger.right); digger.nextDest = 3 * MapManager.manager.getPositionOf(0, body.centerColumnID) - 2 * MapManager.manager.getPositionOf(1, body.centerColumnID); digger.gameObject.SetActive(true); digger.travelToNext(); }
// I have clicked on this curve section of cave within the hierarchy public void SelectCurve() { CaveManager cmanager = GameObject.FindGameObjectWithTag("CaveManager").GetComponent <CaveManager> (); cmanager.DeSelectCaveBezier(); m_gizmos.Add(Instantiate(m_gizmo, a_anchor, Quaternion.identity).transform); m_gizmos.Add(Instantiate(m_gizmo, a_control, Quaternion.identity).transform); //Make handle (1) a child of anchor (0) m_gizmos [0].GetComponent <Gizmo> ().m_childGizmo = m_gizmos [1]; m_gizmos.Add(Instantiate(m_gizmo, b_control, Quaternion.identity).transform); m_gizmos.Add(Instantiate(m_gizmo, b_anchor, Quaternion.identity).transform); //Make handle (2) a child of anchor (3) m_gizmos [3].GetComponent <Gizmo> ().m_childGizmo = m_gizmos [2]; int m_lengthRes = cmanager.GetDivRes(); // Add the scaling rings for (int i = 0; i < m_lengthRes; ++i) { //Add a new ring m_gizmos.Add(Instantiate(m_bezierScaleGizmo, transform.position, Quaternion.identity).transform); // Set the t value for this ring m_gizmos [m_gizmos.Count - 1].GetComponent <GizmoRing> ().m_percentageT = ((float)1 / (m_lengthRes - 1)) * i; m_gizmos [m_gizmos.Count - 1].GetComponent <GizmoRing> ().m_bezier = this; } PositionRingGizmos(); cmanager.SelectCaveBezier(this); }
internal void createEntranceAt(int colID, Vector3 dir) { columnID = colID; CaveManager.entrances.Add(this); GameObject digObj = CaveManager.getNewDigger(); digObj.transform.localScale = new Vector3(1, 1, 1); digger = digObj.GetComponent <Digger>(); digger.init(this); digger.colID = colID; digger.tier = 0; digger.layer = 0; digger.neighbourCount = 0; digger.transform.position = Vector3.zero; digger.setScale(entrancesize); digger.gradient = 2; direction = dir.normalized; if (direction.magnitude != 1) { Debug.LogError("digging entrance with no direction, dir = " + direction); } digger.right = Vector3.Cross(direction, -MapManager.manager.getPositionOf(0, columnID)).normalized; digger.travelDir = direction.normalized; //Debug.Log("creating new digger with dir = " + digger.travelDir + " right = " + digger.right); digger.nextDest = 3 * MapManager.manager.getPositionOf(0, colID) - 2 * MapManager.manager.getPositionOf(1, colID); digger.gameObject.SetActive(true); digger.travelToNext(); }
IEnumerator DecideLongTouch() { yield return(new WaitForSeconds(0.5f)); if (StillTouch) { NowAssignIsland = true; CaveManager cavemanager = FindObjectsOfType <CaveManager>()[0].GetComponent <CaveManager>(); cavemanager.PetOnIsland(Petnum); } }
private void PositionRingGizmos() { CaveManager cmanager = GameObject.FindGameObjectWithTag("CaveManager").GetComponent <CaveManager> (); int m_lengthRes = cmanager.GetDivRes(); // Add the scaling rings for (int i = 0; i < m_lengthRes; ++i) { // Get the position CURRENTLY along the bezier (0 .. 1) t -> vec3 Vector3 bezierTPos = PositionFromInterpolant(((float)1 / (m_lengthRes - 1)) * i); // Get t (interpolant) for next (0 .. 1+(eot)) (last spill) float tNext = ((float)1 / (m_lengthRes - 1)) * (i + 1); Vector3 dir = Vector3.zero; Quaternion rot = Quaternion.identity; // if !last if (tNext <= 1) { // safe internal dir = Vector3.Normalize(PositionFromInterpolant(tNext) - bezierTPos); rot = Quaternion.LookRotation(dir); } else { // collect spilled value dir = Vector3.Normalize(bezierTPos - PositionFromInterpolant(((float)1 / (m_lengthRes - 1)) * (i - 1))); if (dir != Vector3.zero) { rot = Quaternion.LookRotation(dir); } } // Rotate to the bezier orientation m_gizmos [i + 4].position = bezierTPos; //Position along bezier m_gizmos [i + 4].rotation = rot; if (i < m_DivScales.Count) { //Scale to size m_gizmos [i + 4].localScale = new Vector3(m_DivScales[i], m_DivScales[i], m_DivScales[i]); } else { //Scale to size m_gizmos [i + 4].localScale = new Vector3(3.25f, 3.25f, 3.25f); } } }
public IEnumerator allSurfaceVoxelsLoadedServerSide() { if (!isServer) { Debug.LogError("trying to do server map opperations on client side"); } yield return(new WaitForSeconds(1.4f)); foreach (Voxel vox in voxels[0].Values) { //vox.gameObject.transform.localScale *= MapManager.mapSize; vox.checkNeighbourCount(); //Debug.Log("adding position for voxel 0, " + vox.columnID); try { voxelPositions.Add(vox.columnID, vox.centreOfObject); } catch (ArgumentException a) { //Debug.LogError(a); Debug.LogError("already added this voxel to voxel positions? colID = " + vox.columnID + " old center: " + voxelPositions[vox.columnID] + " new center: " + vox.centreOfObject); } // This was uneccasarry and was causing errors with new lobby system (names are still trivoxel // vox.gameObject.name = "TriVoxel"; } if (noSurfaceCaves > 0) { //Debug.Log("digging caves"); CaveManager.digTierZeroCaves(); } else { if (useHills) { //Debug.Log("creating hills"); deviateHeights(); } else { //Debug.Log("finishing map - no caves no hills"); finishMapLocally(); } } }
// Use this for initialization void Start() { //Debug.Log("trying to start cave manager"); tiersLeft = caveTiers; //Debug.Log("starting cave manager"); caves = new HashSet <CaveBody>(); entrances = new HashSet <CaveEntrance>(); diggers = new HashSet <Digger>(); tunnels = new HashSet <CaveTunnel>(); diggerPrefab = Resources.Load("Prefabs/Map/Digger"); manager = this; caveFloors = new HashSet <Voxel>(); caveCeilings = new HashSet <Voxel>(); caveWalls = new HashSet <Voxel>(); //Debug.Log("found digger : " + diggerPrefab); }
void Start() { m_mapHandlerScript = GameObject.FindGameObjectWithTag("MapHandler").GetComponent <MapHandler> (); m_caveManagerScript = GameObject.FindGameObjectWithTag("CaveManager").GetComponent <CaveManager> (); }
public int currentCave = 0; //current cave that the player is in //Called before Start void Awake() { //Check if instance exists if (instance == null) { //If not, set it up instance = this; //If it's already set up and it's not this, destroy it } else if (instance != this) { Destroy(gameObject); } //Get the intro animation object introAnim = GameObject.Find("IntroAnim").GetComponent <Animator>(); //Instantiate the arraylist objectsOnScreen = new ArrayList(); //Don't destroy this when reloading a scene //DontDestroyOnLoad(gameObject); //Get caveScript, which is attached to the Cave object caveScript = GameObject.Find("Cave").GetComponent <CaveManager>(); //Find sound by name sound = GameObject.Find("Sound").GetComponent <SoundManager>(); sound.Init(); //Find ui by name ui = GameObject.Find("UI").GetComponent <UI>(); ui.Init(); //Find player by name player = GameObject.Find("Player").GetComponent <Player>(); //Find journal by name journal = GameObject.Find("Journal").GetComponent <Journal>(); //Update highscores upScore = GameObject.Find("HighScore").GetComponent <HighScore> (); //Get credits animator credits = GameObject.Find("Credits").GetComponent <Animator> (); //Show the UI for getting the player's name, and pauses the game menuUI.SetActive(false); getNameUI.SetActive(true); Time.timeScale = 0f; input.ActivateInputField(); //Initialize the game by creating cave 0 caveScript.Init(); createCave(0, false); //Start the intro conversation GameObject.Find("IntroDialogue").GetComponent <Dialogue>().StartDialogue(); //Set all bools to false, don't allow the player to move/shoot yet player.enabled = false; battleStart = false; form1dead = false; form2dead = false; endgame = false; cutscenePlaying = true; //Firstcave = if the player has not yet gone to a different cave yet firstcave = true; }
// Update is called once per frame void Update() { float dist = Vector3.Distance(transform.position, Camera.main.transform.position); float m_size = ((dist > 1) ? dist : 1) * m_gizmoScale; transform.localScale = new Vector3(m_size, m_size, m_size); // Hit out from raycast RaycastHit hit; // Cast the mouse position to world hit Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); // Ray hit a collider if (Physics.Raycast(ray, out hit)) { if (!m_gizmoActive) { // Get the clicked gizmo handle if (hit.collider.tag == "GizmoHandle") { if (Input.GetMouseButton(0)) { // Disable sketch mode m_gizmoActive = true; m_toolManagerScript.SetAllowedToDraw(false); // Cache the object m_activeHandle = hit.collider.gameObject; // Process the axis from the clicked object's name if (!m_axisProcessed) { numberOfAxis = ProcessAxis(hit.collider.gameObject.name); if (hit.transform.childCount == 0) { m_colourView.GetComponent <Renderer> ().material = hit.collider.GetComponent <Renderer> ().material; } else { m_colourView.GetComponent <Renderer> ().material = hit.transform.GetChild(0).GetComponent <Renderer> ().material; } } } } else { if (hit.collider.tag == "GizmoRing") { m_ringActive = true; m_toolManagerScript.SetAllowedToDraw(false); // Cache the object m_activeHandle = hit.collider.gameObject; } } } } if (!Input.GetMouseButton(0)) { // Re-enable sketch mode m_gizmoActive = false; m_ringActive = false; m_toolManagerScript.SetAllowedToDraw(true); } if (m_ringActive) { float mouseMove = m_lastMousePosition.x - Input.mousePosition.x; if (mouseMove < 0) { if (m_activeHandle.transform.root.localScale.x > 2) { m_activeHandle.transform.root.localScale += new Vector3(mouseMove * .1f, mouseMove * .1f, mouseMove * .1f); } } else { m_activeHandle.transform.root.localScale += new Vector3(mouseMove * .1f, mouseMove * .1f, mouseMove * .1f); } CaveManager cmanager = GameObject.FindGameObjectWithTag("CaveManager").GetComponent <CaveManager> (); if (m_activeHandle.transform.root != null) { m_activeHandle.transform.root.GetComponent <GizmoRing> ().m_bezier.UpdateMesh(cmanager.GetDivRes(), cmanager.GetRoundRes()); } } // The gizmo is active, do logic if (m_gizmoActive && m_activeHandle.transform.root.gameObject == this.gameObject) { Vector2 mouseMove = m_lastMousePosition - Input.mousePosition; // Do the correct process in the retrieved axis switch (m_processType) { case ProcessType.Translate: { // SingleAxis if (numberOfAxis == 1) { // Up is along axis, convert to screen space Vector3 screenPos = Camera.main.WorldToScreenPoint(m_activeHandle.transform.position); Vector3 screenPosUp = Camera.main.WorldToScreenPoint(m_activeHandle.transform.position + m_activeHandle.transform.up); float colinearity = Vector2.Dot( Vector3.Normalize(new Vector2(screenPos.x - screenPosUp.x, screenPos.y - screenPosUp.y)), Vector3.Normalize(new Vector2(mouseMove.x, mouseMove.y)) ); Vector3 newPos = m_activeHandle.transform.up * colinearity * (mouseMove.magnitude * m_gizmoMovementPower) * (m_size * m_gizmoMovementPower); newPos = (newPos.magnitude > 10000) ? Vector3.zero : newPos; transform.Translate(newPos, Space.World); if (m_childGizmo != null) { m_childGizmo.Translate(newPos, Space.World); } } else { // Planar motion Plane plane = new Plane(m_activeHandle.transform.up, transform.position); //Vector2 mouseMove = m_lastMousePosition - Input.mousePosition; // Create a current and last ray Ray curRay = Camera.main.ScreenPointToRay(Input.mousePosition); Ray lastRay = Camera.main.ScreenPointToRay(m_lastMousePosition); //Distance along ray (on plane) float distance; Vector3 curpos = Vector3.zero; Vector3 lastpos = Vector3.zero;; // Do the raycasts if (plane.Raycast(lastRay, out distance)) { lastpos = lastRay.GetPoint(distance); } if (plane.Raycast(curRay, out distance)) { curpos = curRay.GetPoint(distance); } Vector3 newPos = (curpos - lastpos) * (mouseMove.magnitude * m_gizmoMovementPower) * (m_size * m_gizmoMovementPower); newPos = (newPos.magnitude > 10000) ? Vector3.zero : newPos; transform.Translate(newPos, Space.World); if (m_childGizmo != null) { m_childGizmo.Translate(newPos, Space.World); } } } break; case ProcessType.Rotate: { transform.Rotate(m_activeHandle.transform.up * mouseMove.x, Space.World); if (m_childGizmo != null) { m_childGizmo.RotateAround(transform.position, m_activeHandle.transform.up, mouseMove.x); } } break; } } else { // Reset the core material colour m_colourView.GetComponent <Renderer> ().material = m_resetMaterial; // Reset the currently active axis (because I check for them additively) m_activeAxis = Vector3.zero; // A bit of a messy way to store active axis but oh well numberOfAxis = 0; } // Cache mouse pos at end of update tick m_lastMousePosition = Input.mousePosition; }
public string MovePlayer(int desiredCave) { LocationManager.PlayerMovement(desiredCave); PlayerManager.TakeATurn(); string PositionStatus = LocationManager.CheckPositions(); if (PositionStatus == "wumpus") { SoundManager.PlayWumpus(); bool didWin = TriviaObject.TriviaBattle(5, 3); if (didWin) { LocationManager.WumpusMoves(); } else { EndGameNormally(); } } else if (PositionStatus == "pit") { //trivia //sound SoundManager.PlayPit(); bool didWin = TriviaObject.TriviaBattle(3, 1); if (didWin) { LocationManager.WumpusMoves(); } else { EndGameNormally(); } LocationManager.PitsMove(); } else if (PositionStatus == "bat") { //trivia //sound SoundManager.PlayBats(); LocationManager.BatsMove(); LocationManager.BatFling(); return("A bat flung you to another room!"); } string Proximity = LocationManager.CheckProximity(CaveManager.GetConnectedList(LocationManager.Player)); if (Proximity == "wumpus") { return("The Wumpus is close."); } else if (Proximity == "pit") { return("I feel a draft."); } else if (Proximity == "bat") { return("Bats are squeaky."); } else { return(TriviaObject.GetSecret()); } //get a secret thing and show it }