Example #1
0
    public GameObject SetupDrivePrefab()
    {
        if (drive.dirDriveFacade)
        {
            Undo.DestroyObjectImmediate(drive.dirDriveFacade.gameObject);
        }
        if (drive.rotDriveFacade)
        {
            Undo.DestroyObjectImmediate(drive.rotDriveFacade.gameObject);
        }

        GameObject prefab   = PrefabsXR.GetDrive(drive.driveType, drive.interactType);
        GameObject newDrive = Instantiate(prefab, drive.transform);

        newDrive.transform.SetAsFirstSibling();
        newDrive.name = prefab.name;

        if (drive.driveType == DriveObject.DriveType.Directional)
        {
            drive.dirDriveFacade = newDrive.GetComponent <DirectionalDriveFacade>();
        }
        else
        {
            drive.rotDriveFacade = newDrive.GetComponent <RotationalDriveFacade>();
        }

        drive.interactibleObject = newDrive.GetComponentInChildren <InteractibleObject>();

        Undo.RegisterCreatedObjectUndo(newDrive.gameObject, "");
        return(newDrive.gameObject);
    }
    public static PlayerComponent CreateComponent(PlayerComponent.ComponentTypes _type, PlayerRig _rig)
    {
        var tempObject = PrefabsXR.GetPlayerComponent(_type);

        if (!tempObject)
        {
            return(null);
        }
        var instantiatedObject = Instantiate(tempObject, _rig.transform).GetComponent <PlayerComponent>();

        //var instantiatedObject = ((GameObject)PrefabUtility.InstantiatePrefab());
        instantiatedObject.Setup(_rig);
        Undo.RegisterCreatedObjectUndo(instantiatedObject.gameObject, $"Added {_type} Component");
        return(instantiatedObject);
    }