Exemplo n.º 1
0
        public static ProjectorConfiguration CreateConfiguration(ProjectorEmitter emitter, string path, string name = "Projector_Configuration")
        {
            ProjectorConfiguration asset = ScriptableObject.CreateInstance <ProjectorConfiguration>();

            AssetDatabase.CreateAsset(asset, "Assets/" + path + "/" + name + ".asset");
            EditorUtility.SetDirty(asset);

            return(asset);
        }
Exemplo n.º 2
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);
        }
Exemplo n.º 3
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();
        }