Example #1
0
    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();
    }