public void SetSocketPositions(GameObject fuselage) { SocketPositions fuselageSocket = fuselage.GetComponent <SocketPositions>(); enginePosition = fuselageSocket.enginePosition; wingPosition = fuselageSocket.wingPosition; NosePosition = fuselageSocket.NosePosition; foreach (Transform child in transform) { switch (child.gameObject.tag) { case "Engine": child.localPosition = enginePosition; break; case "Wing": child.localPosition = wingPosition; break; case "Nose": child.localPosition = NosePosition; break; } } }
private void CreateDrone() { Destroy(fuselage); fuselage = (GameObject)Instantiate(shipDetails.fuselage, transform); SocketPositions socketPositions = fuselage.GetComponent <SocketPositions>(); fuselage.GetComponent <Renderer>().material.shader = droneShader; Destroy(engine); engine = (GameObject)Instantiate(shipDetails.engine, transform.position, transform.rotation, transform); engine.transform.localPosition = socketPositions.enginePosition; engine.GetComponent <Renderer>().material.shader = droneShader; Destroy(wing); wing = (GameObject)Instantiate(shipDetails.wing, transform.position, transform.rotation, transform); wing.transform.localPosition = socketPositions.wingPosition; wing.GetComponent <Renderer>().material.shader = droneShader; Destroy(nose); nose = (GameObject)Instantiate(shipDetails.nose, transform.position, transform.rotation, transform); nose.transform.localPosition = socketPositions.NosePosition; nose.GetComponent <Renderer>().material.shader = droneShader; //TODO fix occlusion rendering on spawned drone for (int i = 0; i < engine.GetComponent <Renderer>().materials.Length; i++) { //engine.GetComponent<Renderer>().materials[i].shader = Shader.Find("BumpedOutline"); } }
private void EquipComponent() { if (GetCurrentHandGripRelease()) { if (compatibleComponent != null) { if (equippedPart != null) { Destroy(equippedPart); } equippedPart = (GameObject)Instantiate(compatibleComponent, transform.position, transform.rotation, transform);//Instantiate(compatibleComponent, transform); equippedPart.GetComponent <DroneComponent>().rotSpeed = Vector3.zero; equippedPart.GetComponent <DroneComponent>().onStand = false; equippedPart.GetComponent <Collider>().enabled = false; equippedPart.transform.localScale = Vector3.one; } equippedPart.tag = socketType; Renderer eqPartRenderer = equippedPart.GetComponent <Renderer>(); for (int i = 0; i < eqPartRenderer.materials.Length; i++) { eqPartRenderer.materials[i].shader = Shader.Find("Standard"); } partEquipped = true; if (equipSFXCooldown <= 0) { AudioSource.PlayClipAtPoint(equipSFX, transform.position); equipSFXCooldown = 2; } ShipDetails shipDetails = transform.parent.GetComponent <ShipDetails>(); switch (socketType) { case "Fuselage": SocketPositions holoSocketPositions = transform.parent.GetComponent <SocketPositions>(); holoSocketPositions.SetSocketPositions(equippedPart); shipDetails.fuselage = equippedPart; break; case "Engine": shipDetails.engine = equippedPart; break; case "Nose": shipDetails.nose = equippedPart; break; case "Wing": shipDetails.wing = equippedPart; break; } transform.parent.GetComponent <ShipDetails>().RefreshStats(); compatibleComponentInVicinity = false; } }