Пример #1
0
        public static ProjectorEmitter CreateEmitter(ProjectorMount mount, ProjectorPlane plane, string name = "Projector Emitter")
        {
            GameObject go = new GameObject(name);

            go.transform.parent        = mount.transform;
            go.transform.localPosition = Vector3.zero;
            go.transform.LookAt(plane.transform);
            go.AddComponent <Camera>();

            // small hack to archive 90 degree angles
            Vector3 angles = go.transform.localEulerAngles / 90f;

            angles = new Vector3(Mathf.Round(angles.x), Mathf.Round(angles.y), Mathf.Round(angles.z));
            go.transform.localEulerAngles = angles * 90f;

            ProjectorEmitter emitter = go.AddComponent <ProjectorEmitter>();

            emitter.Plane = plane;
            return(emitter);
        }
Пример #2
0
        private ProjectorCamera CreateCamera(ProjectorMount mount, ProjectorPlane plane)
        {
            GameObject go = new GameObject();

            go.transform.parent        = mount.transform;
            go.transform.localPosition = Vector3.zero;
            go.transform.LookAt(plane.transform);
            go.AddComponent <Camera>();

            // small hack to archive 90 degree angles
            Vector3 angles = go.transform.localEulerAngles / 90f;

            angles = new Vector3(Mathf.Round(angles.x), Mathf.Round(angles.y), Mathf.Round(angles.z));
            go.transform.localEulerAngles = angles * 90f;

            go.name = "Camera " + RotationToName(go.transform.localEulerAngles);

            ProjectorCamera camera = go.AddComponent <ProjectorCamera>();

            camera.Plane = plane;

            return(camera);
        }
Пример #3
0
        public override void Build(ModuleMaker maker, GameObject root, GameObject head)
        {
            ProjectorBrain brain = root.AddComponent <ProjectorBrain>();

            brain.transform.position = this.position;

            ProjectorEyes eyes = head.AddComponent <ProjectorEyes>();

            eyes.transform.parent        = brain.transform;
            eyes.transform.localPosition = new Vector3(0f, 1.8f, 0f);

            ProjectorMount mount = (new GameObject("Mount")).AddComponent <ProjectorMount>();

            mount.transform.parent        = brain.transform;
            mount.transform.localPosition = eyes.transform.localPosition;
            mount.Eyes = eyes;

            if (this.selection.HasFlag(ProjectorSelection.Front))
            {
                ProjectorPlane  plane  = CreatePlane(brain, new Vector3(0, this.height * 0.5f, this.length * 0.5f), Vector3.zero);
                ProjectorCamera camera = CreateCamera(mount, plane);
                CreateCameraConfiguration(camera, SelectionToDisplayId(ProjectorSelection.Front), this.width, this.height);
            }

            if (this.selection.HasFlag(ProjectorSelection.Back))
            {
                ProjectorPlane  plane  = CreatePlane(brain, new Vector3(0, this.height * 0.5f, -this.length * 0.5f), Vector3.up * 180f);
                ProjectorCamera camera = CreateCamera(mount, plane);
                CreateCameraConfiguration(camera, SelectionToDisplayId(ProjectorSelection.Back), this.width, this.height);
            }

            if (this.selection.HasFlag(ProjectorSelection.Top))
            {
                ProjectorPlane  plane  = CreatePlane(brain, new Vector3(0, this.height, 0), Vector3.right * -90f);
                ProjectorCamera camera = CreateCamera(mount, plane);
                CreateCameraConfiguration(camera, SelectionToDisplayId(ProjectorSelection.Top), this.width, this.length);
            }

            if (this.selection.HasFlag(ProjectorSelection.Bottom))
            {
                ProjectorPlane  plane  = CreatePlane(brain, Vector3.zero, Vector3.right * 90f);
                ProjectorCamera camera = CreateCamera(mount, plane);
                CreateCameraConfiguration(camera, SelectionToDisplayId(ProjectorSelection.Bottom), this.width, this.length);
            }

            if (this.selection.HasFlag(ProjectorSelection.Left))
            {
                ProjectorPlane  plane  = CreatePlane(brain, new Vector3(-this.width * 0.5f, this.height * 0.5f, 0), Vector3.up * -90f);
                ProjectorCamera camera = CreateCamera(mount, plane);
                CreateCameraConfiguration(camera, SelectionToDisplayId(ProjectorSelection.Left), this.length, this.height);
            }

            if (this.selection.HasFlag(ProjectorSelection.Right))
            {
                ProjectorPlane  plane  = CreatePlane(brain, new Vector3(this.width * 0.5f, this.height * 0.5f, 0), Vector3.up * 90f);
                ProjectorCamera camera = CreateCamera(mount, plane);
                CreateCameraConfiguration(camera, SelectionToDisplayId(ProjectorSelection.Right), this.length, this.height);
            }

            string            assetPath = ModuleMaker.AssetPath + "/Projector Settings.asset";
            ProjectorSettings asset     = AssetDatabase.LoadAssetAtPath <ProjectorSettings>(assetPath);

            if (asset == null)
            {
                asset = ScriptableObject.CreateInstance <ProjectorSettings>();
                asset.CameraTarget      = this.target;
                asset.ForceFullScreen   = false;
                asset.StereoSeparation  = 0.064f;
                asset.StereoConvergence = 10f;
                asset.NearClipPlane     = 0.01f;
                asset.FarClipPlane      = 1000f;
                AssetDatabase.CreateAsset(asset, assetPath);
            }

            brain.Settings = asset;
        }
Пример #4
0
        public static void CreateRig(RigInfo rigInfo)
        {
            RigUtility.CreateAssetsFolder(rigInfo.assetsFolder);

            ProjectorBrain brain = RigUtility.CreateBrain(rigInfo.position, rigInfo.name);
            ProjectorEyes  eyes  = RigUtility.CreateEyes(brain);
            ProjectorMount mount = RigUtility.CreateMount(brain, eyes);

            if (rigInfo.selection.HasFlag(RigSelection.Front))
            {
                ProjectorPlane   plane   = RigUtility.CreatePlane(brain, new Vector3(0, rigInfo.height * 0.5f, rigInfo.length * 0.5f), Vector3.zero, "Projector Plane Front");
                ProjectorEmitter emitter = RigUtility.CreateEmitter(mount, plane, "Projector Emitter Front");

                if (rigInfo.buildReady)
                {
                    emitter.Configuration = RigUtility.CreateConfiguration(emitter, rigInfo.assetsFolder, "Projector_Configuration_Front");
                    RigUtility.DefaultConfiguration(emitter.Configuration, rigInfo.width, rigInfo.height, 2, "Front");
                }
            }

            if (rigInfo.selection.HasFlag(RigSelection.Back))
            {
                ProjectorPlane   plane   = RigUtility.CreatePlane(brain, new Vector3(0, rigInfo.height * 0.5f, -rigInfo.length * 0.5f), Vector3.up * 180f, "Projector Plane Back");
                ProjectorEmitter emitter = RigUtility.CreateEmitter(mount, plane, "Projector Emitter Back");

                if (rigInfo.buildReady)
                {
                    emitter.Configuration = RigUtility.CreateConfiguration(emitter, rigInfo.assetsFolder, "Projector_Configuration_Back");
                    RigUtility.DefaultConfiguration(emitter.Configuration, rigInfo.width, rigInfo.height, 4, "Back");
                }
            }

            if (rigInfo.selection.HasFlag(RigSelection.Top))
            {
                ProjectorPlane   plane   = RigUtility.CreatePlane(brain, new Vector3(0, rigInfo.height, 0), Vector3.right * -90f, "Projector Plane Top");
                ProjectorEmitter emitter = RigUtility.CreateEmitter(mount, plane, "Projector Emitter Top");

                if (rigInfo.buildReady)
                {
                    emitter.Configuration = RigUtility.CreateConfiguration(emitter, rigInfo.assetsFolder, "Projector_Configuration_Top");
                    RigUtility.DefaultConfiguration(emitter.Configuration, rigInfo.width, rigInfo.length, 5, "Top");
                }
            }

            if (rigInfo.selection.HasFlag(RigSelection.Bottom))
            {
                ProjectorPlane   plane   = RigUtility.CreatePlane(brain, Vector3.zero, Vector3.right * 90f, "Projector Plane Bottom");
                ProjectorEmitter emitter = RigUtility.CreateEmitter(mount, plane, "Projector Emitter Bottom");

                if (rigInfo.buildReady)
                {
                    emitter.Configuration = RigUtility.CreateConfiguration(emitter, rigInfo.assetsFolder, "Projector_Configuration_Bottom");
                    RigUtility.DefaultConfiguration(emitter.Configuration, rigInfo.width, rigInfo.length, 6, "Bottom");
                }
            }

            if (rigInfo.selection.HasFlag(RigSelection.Left))
            {
                ProjectorPlane   plane   = RigUtility.CreatePlane(brain, new Vector3(-rigInfo.width * 0.5f, rigInfo.height * 0.5f, 0), Vector3.up * -90f, "Projector Plane Left");
                ProjectorEmitter emitter = RigUtility.CreateEmitter(mount, plane, "Projector Emitter Left");

                if (rigInfo.buildReady)
                {
                    emitter.Configuration = RigUtility.CreateConfiguration(emitter, rigInfo.assetsFolder, "Projector_Configuration_Left");
                    RigUtility.DefaultConfiguration(emitter.Configuration, rigInfo.length, rigInfo.height, 1, "Left");
                }
            }

            if (rigInfo.selection.HasFlag(RigSelection.Right))
            {
                ProjectorPlane   plane   = RigUtility.CreatePlane(brain, new Vector3(rigInfo.width * 0.5f, rigInfo.height * 0.5f, 0), Vector3.up * 90f, "Projector Plane Right");
                ProjectorEmitter emitter = RigUtility.CreateEmitter(mount, plane, "Projector Emitter Right");

                if (rigInfo.buildReady)
                {
                    emitter.Configuration = RigUtility.CreateConfiguration(emitter, rigInfo.assetsFolder, "Projector_Configuration_Right");
                    RigUtility.DefaultConfiguration(emitter.Configuration, rigInfo.length, rigInfo.height, 3, "Right");
                }
            }

            if (rigInfo.buildReady)
            {
                brain.Settings = RigUtility.CreateSettings(rigInfo.assetsFolder);
                RigUtility.DefaultSettings(brain.Settings);
                RigUtility.AttachController(brain, eyes, rigInfo.joycon);
            }

            if (rigInfo.sceneTools)
            {
                mount.Gizmos = ProjectorGizmos.Viewport | ProjectorGizmos.Wireframe;
            }

            if (rigInfo.kinect)
            {
                RigUtility.AttachKinect(brain, eyes, new Vector3(0f, rigInfo.height + 0.25f, rigInfo.length * 0.5f), rigInfo.assetsFolder);
            }

            RigUtility.InstantiateImportExport(brain, mount, brain.GetComponent <KinectBrain>(), rigInfo.name, rigInfo.assetsFolder);

            if (rigInfo.menu)
            {
                RigUtility.InstantiateMenu(brain, mount, brain.GetComponent <KinectBrain>(), rigInfo.name);
            }

            if (rigInfo.joycon)
            {
                RigUtility.InstantiateJoycons();
            }

            AssetDatabase.SaveAssets();
            AssetDatabase.Refresh();
        }