bool checkPassable(GameObject obj, string tag) { switch (tag) { case "tile": TileScript tile = obj.GetComponent <TileScript>(); if (tile == null) { Debug.Log("lol"); return(false); } else { return(tile.isPassable()); } case "furn": FurnitureScript furn = obj.GetComponent <FurnitureScript>(); if (furn == null) { Debug.Log("lol"); return(false); } else { return(furn.isPassable()); } default: return(true); } }
// Start is called before the first frame update private void Start() { m_currentFurniScript = null; m_furnituresData = new List <Furniture>(); Sc_WallsCreator = FindObjectOfType <WallsCreator>(); if (Sc_WallsCreator == null) { Debug.LogWarning("FurnitureCreator 'Sc_WallCreator' is null"); } }
private void Start() { btn = gameObject.GetComponent <Button>(); furniture = gm.GetComponent <FurnitureScript>(); btn.interactable = !furniture.isOnWall; Sc_WallsCreator = FindObjectOfType <WallsCreator>(); if (Sc_WallsCreator == null) { Debug.LogWarning("IsInteractibleContent 'Sc_WallCreator' is null"); } }
public void ScaleFernitureX(float scale) { FurnitureScript myscript = furniture.GetComponentInChildren <FurnitureScript>(); Vector3 tmp = furniture.transform.localScale; tmp.x += scale * scaleFactor; if (tmp.x < myscript.maxDepth && tmp.x > myscript.minDepth) { furniture.transform.localScale = tmp; } }
void ShowUINavigation() { if (!utilizeObject) { itemController = null; furnitureController = null; ClearMessage(); if (gameController.ActionNavigatorActiveSelf) { gameController.actionNavigationController.ClearActionNavigation(); } return; } if (GameTrigger.isEventScene) { return; } if (utilizeObject.CompareTag("Wall")) { print("wall -----"); return; } if (utilizeObject.CompareTag("Item")) { Debug.Log("utilize Item : " + utilizeObject.name); if (itemController == null) { itemController = utilizeObject.GetComponentInParent <ItemController>(); } itemController.HandItemUIInfo(ref actionText, ref keyCode, ref action); } else if (utilizeObject.CompareTag("Furniture")) { Debug.Log("utilize Furniture ; " + utilizeObject.name); if (furnitureController == null) { furnitureController = utilizeObject.GetComponentInParent <FurnitureScript>(); } furnitureController.handFurnitureUIInfo(ref messageText, ref actionText, ref keyCode, ref action); } if (actionText != null) { Debug.Log("setActionNavi"); gameController.actionNavigationController.SetActionNavigation(keyCode, actionText); } }
public void ScaleFernitureZ(float scale) { FurnitureScript myscript = furniture.GetComponentInChildren <FurnitureScript>(); Vector3 tmp = furniture.transform.localScale; tmp.z += scale * scaleFactor; if (tmp.z < myscript.maxHeight && tmp.z > myscript.minHeight) { furniture.transform.Translate(0, 0.1f, 0, Space.World); furniture.transform.localScale = tmp; } }
/// <summary> /// Destroy current furniture to cancel its creation /// </summary> private void CancelFurniture() { if (m_currentFurniScript) { //Destroy(m_currentFurniture2DFace); Destroy(m_currentFurniture2DTop); Destroy(m_currentFurniture3D); Destroy(m_currentFurniScript.gameObject); Destroy(m_currentFurniture.text2D); m_furnituresData.Remove(m_currentFurniture); FurnitureListScroll.Instance.UpdateList(); m_currentFurniture = null; m_currentFurniScript = null; } }
// Update is called once per frame private void Update() { // RIGIDBODIES foreach (var f in m_furnituresData) { if (f != m_currentFurniture) { //if (f.associated3DObject == null) { return; } var rb = f.associated3DObject.GetComponent <Rigidbody>(); // Freeze all except if its current selected furniture if (SelectedObjectManager.Instance.currentFurnitureData.Count == 1 && SelectedObjectManager.Instance.currentFurnitureData[0] == f) { if (f.IsOnWall) { rb.constraints = RigidbodyConstraints.FreezeRotation; rb.useGravity = false; } else { if (f.CanBePutOnFurniture) { rb.constraints = RigidbodyConstraints.FreezeRotation; } else { rb.constraints = RigidbodyConstraints.FreezeRotation | RigidbodyConstraints.FreezePositionY; } } } else { rb.constraints = RigidbodyConstraints.FreezeAll; } // update 2D position if moving if (f.associated3DObject?.GetComponent <Rigidbody>().velocity.magnitude > 0 && f.associated3DObject.activeSelf) //activeSelf Evite de deplacer l'objet 2D quand la 3d est masquer { f.Position = f.associated3DObject.transform.position; f.associated2DObject.transform.position = VectorFunctions.GetExactPositionFrom3DObject(f.associated2DObject, f.associated3DObject, f.Position); //VectorFunctions.Switch3D2D(f.Position); rb.velocity *= 0.5f; } f.text2D.transform.position = f.associated2DObject.transform.position; } } // In creation -> check view then position it if (m_currentFurniture != null) { m_currentFurniture.Move(InputFunctions.GetWorldPoint(GlobalManager.Instance.GetActiveCamera())); } // Validate if (Input.GetMouseButtonDown(0) && m_currentFurniture != null) { m_currentFurniture.Position = m_currentFurniture3D.transform.position; m_currentFurniture = null; if (m_currentFurniScript) { Destroy(m_currentFurniScript.gameObject); m_currentFurniScript = null; } //m_currentFurniture3D.GetComponent<MeshCollider>().enabled = true; } // in creation -> rotation //if (Input.GetMouseButtonDown(1)) { //m_currentFurniture.Rotation = Vector3.Angle(m_currentFurniture.Position,Input.mousePosition); }; if (Input.GetButtonDown("Cancel")) { CancelFurniture(); } }
/// <summary> /// Add a furniture (not custom) on scene /// </summary> /// <param name="furniture">Gameobject containing data in a FurnitureScript (prefab data)</param> public void AddFurniture(GameObject furniture) { FurnitureScript Sc_FurnitureScript = furniture.GetComponent <FurnitureScript>(); if (Sc_FurnitureScript == null) { Debug.LogError("FurnitureCreator 'Sc_FurnitureScript' is null"); } else { if (!Sc_WallsCreator.isOneWall && Sc_FurnitureScript.isOnWall) { //To Do.. //Management of the case where the object needs a wall but there is not one Debug.Log("The object needs a wall"); } else { m_currentFurniScript = Instantiate(furniture).GetComponent <FurnitureScript>(); if (!m_currentFurniScript.furniture2DTop) { m_currentFurniture2DTop = Instantiate(backUpFurniture2DTop, parent2DTop); } else { m_currentFurniture2DTop = Instantiate(m_currentFurniScript.furniture2DTop, parent2DTop); } //m_currentFurniture2DFace = Instantiate(m_currentFurniScript.furniture2DFace, parent2DFace); m_currentFurniture3D = Instantiate(m_currentFurniScript.furniture3D, parent3D); m_currentFurniture3D.tag = "Furniture"; m_currentFurniture2DTop.tag = "Furniture"; m_currentFurniture2DTop.SetLayerRecursively(9); m_currentFurniture3D.SetLayerRecursively(10); m_currentFurniture = new Furniture { associated2DObject = m_currentFurniture2DTop, associated3DObject = m_currentFurniture3D, Name = m_currentFurniScript.furnitureName, Position = m_currentFurniture3D.transform.position, Rotation = 0, PrefabName = m_currentFurniScript.resourceName, Type = m_currentFurniScript.furnitureType, IsOnWall = m_currentFurniScript.isOnWall, CanBePutOnFurniture = m_currentFurniScript.canBePutOnFurniture, ScaleModifier = m_currentFurniScript.scaleRatio }; m_currentFurniture3D.transform.localScale = m_currentFurniture.ScaleModifier * m_currentFurniture.MeshSize; m_currentFurniture.Size = m_currentFurniture.MeshSize * m_currentFurniture.ScaleModifier; SetFurni2DSize(); InitFurnitureText(m_currentFurniture); m_furnituresData.Add(m_currentFurniture); FurnitureListScroll.Instance.UpdateList(); SelectedObjectManager.Instance.Select(m_currentFurniture); SelectedObjectManager.Instance.PlaceFurniture(true); //Prioriter d'affichage celon l'objet if (m_currentFurniture2DTop.name == "officeChair") { m_currentFurniture2DTop.transform.position += Vector3.forward; } //OperationsBufferScript.Instance.AddAutoSave("Ajout de " + m_currentFurniture.Name); } } }
public void ChangeTexture() { FurnitureScript myscript = gameObject.GetComponentInChildren <FurnitureScript>(); myscript.ChangeTexture(); }