private Save createSaveGameObject() { Save save = new Save(); if (playerVehicle.vb != null) { save.vehicleChasis = playerVehicle.vb.id; } if (playerVehicle.propObj.Count > 0) { foreach (PropulsionObject po in playerVehicle.propObj) { //save.propO = playerVehicle.propObj; save.vehiclePropulsion = po.id; CarPart cpp = new CarPart(); cpp.type = 2; cpp.objID = po.id; BuilderPointAttacher bpa = cb.pointList.Find(d => d.gameObj == po.gameObject); cpp.attachID = bpa.attachmentPoint.GetComponent <AttachmentPoint> ().id; save.carParts.Add(cpp); } } if (playerVehicle.wheels.Count > 0) { foreach (Wheel wh in playerVehicle.wheels) { CarPart cp = new CarPart(); BuilderPointAttacher bpa = cb.pointList.Find(d => d.gameObj == wh.gameObject); cp.attachID = bpa.attachmentPoint.GetComponent <AttachmentPoint> ().id; cp.type = 1; cp.objID = wh.id; save.carParts.Add(cp); } } // save.vehicleWheels = playerVehicle.wheels; return(save); }
// [SerializeField] // List<CarPart> cpp; public void loadCar(List <CarPart> cp, int vehicleBody, int po, List <int> propObjList) { clearOldCar(); // cpp = cp; if (cp.Count > 0) { //Check if object is null or not if (vehicle.vb != null) { // Destroy (vehicle.vb.gameObject); } // vehicle.vb = Instantiate (glm.vehicleBody.Find (d => d.id == vehicleBody), glm.vehicleBody.Find (d => d.id == vehicleBody).transform.position,glm.vehicleBody.Find (d => d.id == vehicleBody).transform.rotation) as VehicleBody; // vehicle.vb.transform.SetParent (vehicle.transform); if (vehicle.po != null) { Destroy(vehicle.po.gameObject); } int q = 0; foreach (CarPart cpa in cp) { GameObject pointAttached = vehicle.attachmentPoints.Find(d => d.GetComponent <AttachmentPoint>().id == cpa.attachID); BuilderPointAttacher bp = new BuilderPointAttacher(); bp.attachmentPoint = pointAttached; if (cpa.type == 1) { GameObject goa = Instantiate(glm.wheel.Find(d => d.GetComponent <Wheel>().id == cpa.objID), pointAttached.transform.position, pointAttached.transform.rotation); goa.transform.SetParent(vehicle.GetComponentInChildren <VehicleBody> ().transform); // goa.transform.rotation = pointAttached.transform.rotation; // goa.GetComponentInChildren<MeshRenderer>().transform.rotation = Quaternion.Euler(Vector3.zero); // goa.transform.localScale = new Vector3 (0.03f, 0.03f, 0.03f); // vehicle.GetComponent<Engine>().wheelInfo.Add(goa.GetComponent<Wheel> ()); vehicle.wheels.Add(goa.GetComponent <Wheel> ()); vehicle.vb.cca.m_WheelColliders.Add(goa.GetComponentInChildren <WheelCollider>()); vehicle.vb.cca.m_WheelMeshes.Add(goa.GetComponentInChildren <MeshRenderer>().gameObject); //vehicle.vb.cca.m_WheelMeshes.Add (goa.GetComponentInChildren<GameObject>()); if (goa.GetComponent <Wheel> ().steering) { vehicle.vb.cca.wheelsToSteer.Add(vehicle.vb.cca.m_WheelColliders.Count - 1); } bp.gameObj = goa; } else if (cpa.type == 2) { GameObject pointAttached1 = vehicle.attachmentPoints.Find(d => d.GetComponent <AttachmentPoint>().id == cpa.attachID); GameObject go = Instantiate(glm.propulsionObj.Find(d => d.id == cpa.objID).gameObject, pointAttached.transform.position, pointAttached.transform.rotation); go.transform.SetParent(vehicle.GetComponentInChildren <VehicleBody> ().transform); //go.transform.localPosition =Vector3.zero; vehicle.propObj.Add(go.GetComponent <PropulsionObject> ()); bp.gameObj = go; } pointList.Add(bp); // go.transform.localPosition = new Vector3 (cpa.posX, cpa.posY, cpa.posZ); q++; } q = 0; } }
public void attachObject(GameObject objec) { //attach object from temporary spawned to the attachment point //attach and store this temporary for everytime the player changes attachment point //Destroy game object from tmpspanwed objects list and instantiate it near the car //If other object is selected revert the changes and spawn GameObject obj = Instantiate(objec, currentAttachmentPoint.transform.position, currentAttachmentPoint.transform.rotation); print(objec.transform.localRotation); tmpSpawnedObj.Remove(obj); // Quaternion temp_rot = objec.transform.rotation; obj.transform.SetParent(vehicle.GetComponentInChildren <VehicleBody>().transform); //obj.transform.rotation = temp_rot; if (obj.GetComponent <Wheel> () != null) { obj.transform.localScale = new Vector3(0.02f, 0.02f, 0.02f); } else if (obj.GetComponent <PropulsionObject> () != null) { obj.transform.localScale = new Vector3(0.3f, 0.3f, 0.3f); } List <BuilderPointAttacher> tmp_bp = new List <BuilderPointAttacher> (); foreach (BuilderPointAttacher bp in pointList) { if (bp.attachmentPoint == currentAttachmentPoint) { if (bp.gameObj.GetComponent <Wheel> () != null) { vehicle.wheels.Remove(bp.gameObj.GetComponent <Wheel> ()); //vehicle.GetComponent<Engine> ().removeWheel (bp.gameObj.GetComponent<Wheel> ()); } else if (bp.gameObj.GetComponent <PropulsionObject> () != null) { vehicle.numberOfEngine -= 1; vehicle.propObj.Remove(bp.gameObj.GetComponent <PropulsionObject> ()); } // bp.gameObj.SetActive (false); Destroy(bp.gameObj); //pointList.Remove (bp); tmp_bp.Add(bp); } } foreach (BuilderPointAttacher bpaa in tmp_bp) { pointList.Remove(bpaa); } BuilderPointAttacher bpa = new BuilderPointAttacher(); bpa.attachmentPoint = currentAttachmentPoint; bpa.gameObj = obj; pointList.Add(bpa); if (typeNumber == 1) { vehicle.po = obj.GetComponent <PropulsionObject> (); // vehicle.numberOfEngine += 1; vehicle.propObj.Add(obj.GetComponent <PropulsionObject> ()); //To display stat displayStat("Speed: " + obj.GetComponent <PropulsionObject> ().forceSpeed, "Force: " + obj.GetComponent <PropulsionObject> ().weight); } else { //vehicle.GetComponent<Engine> ().wheelInfo.Add (obj.GetComponent<Wheel>()); vehicle.wheels.Add(obj.GetComponent <Wheel>()); //To display stat displayStat("Speed: " + obj.GetComponent <Wheel> ().speed, "Force: " + obj.GetComponent <Wheel> ().turningRadius); } //ADd to vehicle settings resetParts(); gm.closeAllPopupsAndResume(); disableCol(); }