예제 #1
0
        public EditLocationsGuiSet(Game _game, UserInput _keyboard, EditorLevel _editor)
            : base(_game, _keyboard, _editor)
        {
            exitButton = NewButton("Back", 0, Exit);

            label = NewLabel("Add:", 8);

            addBoxButton = NewButton("Box", 7, () => AddBox("box"+(locationCount++)));
            addPointButton = NewButton("Point", 6, () => AddPoint("point"+(locationCount++)));
            setEndLocationButton = NewButton("End zone", 10, () => AddBox(endzone));
            setStartLocationButton = NewButton("StartPoint", 11, () => AddPoint(startpoint));

            deleteButton = NewButton("Delete", 4, Delete);

            locationLabel = NewTextBox("Location label", "", 2);

            BoxDescription endzoneDesc = m_editor.Map.locationData.end;
            if (endzoneDesc != null && endzoneDesc.box != null) {
                makeBox(endzoneDesc.name, endzoneDesc.box);
            }
            PointDescription startpointDesc = m_editor.Map.locationData.start;
            if (startpointDesc != null &&  startpointDesc.point != null) {
                makePoint(startpointDesc.name, startpointDesc.point);
            }
            boxes2boxes.Clear();
            foreach (BoxDescription box in m_editor.Map.locationData.boxes) {
                var rBox = makeBox(box.name, box.box);
                boxes2boxes.Add(rBox, box);
            }
            points2points.Clear();
            foreach (PointDescription point in m_editor.Map.locationData.points) {
                var mPoint = makePoint(point.name, point.point);
                points2points.Add(mPoint, point);
            }
        }
예제 #2
0
 public EditorTooltipActor(EditorLevel level)
     : base(level, ActorType.Tooltip, level.getUnusedActorId())
 {
     _position = level.controller.worldMouse;
     _radius = 1f;
     _message = "Default Message";
 }
예제 #3
0
 public EditorTooltipActor(EditorLevel level, XElement data)
     : base(level, data)
 {
     _position = Loader.loadVector2(data.Attribute("position"), Vector2.Zero);
     _radius = Loader.loadFloat(data.Attribute("radius"), 1f);
     _message = Loader.loadString(data.Attribute("message"), "Default Message");
 }
예제 #4
0
        public static double ParseReconditioningFormula(BuildListVessel vessel, bool isReconditioning)
        {
            double loadedMass, emptyMass, loadedCost, emptyCost;

            loadedCost = vessel.Cost;
            emptyCost  = vessel.EmptyCost;
            loadedMass = vessel.GetTotalMass();
            emptyMass  = vessel.EmptyMass;

            float LaunchSiteLvl;
            int   EditorLevel, EditorMax, LaunchSiteMax;
            int   isVABVessel = 0;

            if (vessel.Type == BuildListVessel.ListType.VAB)
            {
                EditorLevel   = Utilities.GetBuildingUpgradeLevel(SpaceCenterFacility.VehicleAssemblyBuilding);
                LaunchSiteLvl = KCTGameStates.ActiveKSC.ActiveLPInstance.fractionalLevel;
                EditorMax     = Utilities.GetBuildingUpgradeMaxLevel(SpaceCenterFacility.VehicleAssemblyBuilding);
                LaunchSiteMax = Utilities.GetBuildingUpgradeMaxLevel(SpaceCenterFacility.LaunchPad);
                isVABVessel   = 1;
            }
            else
            {
                EditorLevel   = Utilities.GetBuildingUpgradeLevel(SpaceCenterFacility.SpaceplaneHangar);
                LaunchSiteLvl = Utilities.GetBuildingUpgradeLevel(SpaceCenterFacility.Runway);
                EditorMax     = Utilities.GetBuildingUpgradeMaxLevel(SpaceCenterFacility.SpaceplaneHangar);
                LaunchSiteMax = Utilities.GetBuildingUpgradeMaxLevel(SpaceCenterFacility.Runway);
            }
            double BP          = vessel.BuildPoints;
            double OverallMult = PresetManager.Instance.ActivePreset.TimeSettings.OverallMultiplier;
            double ReconEffect = PresetManager.Instance.ActivePreset.TimeSettings.ReconditioningEffect;
            double MaxRecon    = PresetManager.Instance.ActivePreset.TimeSettings.MaxReconditioning;

            var variables = new Dictionary <string, string>
            {
                { "M", loadedMass.ToString() },
                { "m", emptyMass.ToString() },
                { "C", loadedCost.ToString() },
                { "c", emptyCost.ToString() },
                { "VAB", isVABVessel.ToString() },
                { "BP", BP.ToString() },
                { "L", LaunchSiteLvl.ToString() },
                { "LM", LaunchSiteMax.ToString() },
                { "EL", EditorLevel.ToString() },
                { "ELM", EditorMax.ToString() },
                { "O", OverallMult.ToString() },
                { "E", ReconEffect.ToString() },
                { "X", MaxRecon.ToString() },
                { "RE", (isReconditioning ? 1 : 0).ToString() },
                { "S", PresetManager.Instance.ActivePreset.TimeSettings.RolloutReconSplit.ToString() },
                { "SN", vessel.NumStages.ToString() },
                { "SP", vessel.NumStageParts.ToString() },
                { "SC", vessel.StagePartCost.ToString() }
            };

            AddCrewVariables(variables);

            return(GetStandardFormulaValue("Reconditioning", variables));
        }
예제 #5
0
 public EditorItemActor(EditorLevel level, XElement data)
     : base(level, data)
 {
     _position = Loader.loadVector2(data.Attribute("position"), Vector2.Zero);
     _itemUID = data.Attribute("item_uid").Value;
     _quantity = Loader.loadInt(data.Attribute("quantity"), 1);
     _currentRangeLimit = Loader.loadFloat(data.Attribute("current_range_limit"), 10f);
 }
예제 #6
0
 public EditorItemActor(EditorLevel level, string itemUID)
     : base(level, ActorType.Item, level.controller.getUnusedActorID())
 {
     _itemUID = itemUID;
     _quantity = 1;
     _currentRangeLimit = 10;
     _position = level.controller.worldMouse;
 }
예제 #7
0
 // loadLevel
 public void loadLevel(string filePath)
 {
     using (FileStream fileStream = new FileStream(filePath, FileMode.Open))
     {
         XElement data = XElement.Load(fileStream);
         _level = new EditorLevel(this, data);
     }
 }
예제 #8
0
 public EditorDecalActor(EditorLevel level, XElement data)
     : base(level, data)
 {
     _position = Loader.loadVector2(data.Attribute("position"), Vector2.Zero);
     _decalType = Loader.loadString(data.Attribute("decal_type"), "default_decal");
     textureUid = Loader.loadString(data.Attribute("texture_uid"), "default");
     _origin = Loader.loadVector2(data.Attribute("origin"), Vector2.Zero);
     _angle = Loader.loadFloat(data.Attribute("angle"), 0f);
 }
예제 #9
0
 public EditorRopeActor(EditorLevel level, XElement data)
     : base(level, data)
 {
     _doubleAnchor = Loader.loadBool(data.Attribute("double_anchor"), false);
     _ropeMaterialUID = Loader.loadString(data.Attribute("rope_material_uid"), "default_rope_material");
     _nodeA = new PointListNode(Loader.loadVector2(data.Attribute("point_a"), Vector2.Zero));
     _nodeB = new PointListNode(Loader.loadVector2(data.Attribute("point_b"), Vector2.Zero));
     _selectedPoints = new List<PointListNode>();
 }
예제 #10
0
 public EditorDecalActor(EditorLevel level)
     : base(level, ActorType.Decal, level.controller.getUnusedActorID())
 {
     _position = level.controller.worldMouse;
     _decalType = "default_decal";
     textureUid = "default";
     _origin = Vector2.Zero;
     _angle = 0f;
 }
 public EditorCollisionFilterActor(EditorLevel level)
     : base(level, ActorType.CollisionFilter, level.getUnusedActorId())
 {
     Vector2 worldMouse = _level.controller.worldMouse;
     _selectedPoints = new List<PointListNode>();
     initializeControls(worldMouse + new Vector2(0f, -0.5f), worldMouse + new Vector2(0f, 0.5f));
     _selectedPoints.Add(_nodeA);
     _selectedPoints.Add(_nodeB);
     _layerDepth = 0.1f;
 }
 public EditorCollisionFilterActor(EditorLevel level, XElement data)
     : base(level, data)
 {
     _selectedPoints = new List<PointListNode>();
     if (data.Attribute("actor_a").Value != "-1")
         _actorA = level.getActor(int.Parse(data.Attribute("actor_a").Value));
     if (data.Attribute("actor_b").Value != "-1")
         _actorB = level.getActor(int.Parse(data.Attribute("actor_b").Value));
     initializeControls(Vector2.Zero, Vector2.Zero);
 }
 public EditorLevelTransitionActor(EditorLevel level, XElement data)
     : base(level, data)
 {
     _position = Loader.loadVector2(data.Attribute("position"), Vector2.Zero);
     _halfWidth = Loader.loadFloat(data.Attribute("half_width"), 0.5f);
     _halfHeight = Loader.loadFloat(data.Attribute("half_height"), 0.5f);
     _angle = Loader.loadFloat(data.Attribute("angle"), 0f);
     _levelUid = Loader.loadString(data.Attribute("level_uid"), "default");
     _positionInLevel = Loader.loadVector2(data.Attribute("position_in_level"), Vector2.Zero);
     _requiresActivation = Loader.loadBool(data.Attribute("requires_activation"), true);
 }
 public EditorLevelTransitionActor(EditorLevel level)
     : base(level, ActorType.LevelTransition, level.getUnusedActorId())
 {
     _position = level.controller.worldMouse;
     _halfWidth = 0.5f;
     _halfHeight = 0.5f;
     _angle = 0f;
     _levelUid = "default";
     _positionInLevel = Vector2.Zero;
     _requiresActivation = true;
 }
예제 #15
0
        public EditorWaypointActor(EditorLevel level)
            : base(level, ActorType.Waypoint, level.getUnusedActorId())
        {
            _selectedPoints = new List<PointListNode>();
            _layerDepth = 0.1f;
            _uid = "default_waypoint";

            Vector2 worldMouse = level.controller.worldMouse;
            _headPoint = new PointListNode(worldMouse + new Vector2(-0.5f, 0f));
            _selectedPoints.Add(_headPoint);
            _selectedPoints.Add(_headPoint.tail.insertAfter(worldMouse + new Vector2(0.5f, 0f)));
        }
예제 #16
0
        public EditorRopeActor(EditorLevel level)
            : base(level, ActorType.Rope, level.controller.getUnusedActorID())
        {
            Vector2 worldMouse = _level.controller.worldMouse;

            _nodeA = new PointListNode(worldMouse + new Vector2(0f, -0.5f));
            _nodeB = new PointListNode(worldMouse + new Vector2(0f, 0.5f));
            _selectedPoints = new List<PointListNode>();
            _selectedPoints.Add(_nodeA);
            _selectedPoints.Add(_nodeB);
            _ropeMaterialUID = "default_rope_material";
            _layerDepth = 0.1f;
        }
예제 #17
0
 public EditorWaypointActor(EditorLevel level, XElement data)
     : base(level, data)
 {
     _selectedPoints = new List<PointListNode>();
     _uid = Loader.loadString(data.Attribute("uid"), "default_waypoint");
     foreach (XElement pointData in data.Elements("Point"))
     {
         if (_headPoint == null)
             _headPoint = new PointListNode(Loader.loadVector2(pointData, Vector2.Zero));
         else
             _headPoint.tail.insertAfter(Loader.loadVector2(pointData, Vector2.Zero));
     }
 }
예제 #18
0
 public EditorPrismaticActor(EditorLevel level)
     : base(level, ActorType.Prismatic, level.controller.getUnusedActorID())
 {
     _position = level.controller.worldMouse;
     _angle = 0f;
     _lowerLimit = 0f;
     _upperLimit = 0f;
     _autoForceDifference = 1f;
     _motorSpeed = 0f;
     initializeControls();
     _selectedConnectionA = true;
     _selectedConnectionB = true;
     _moveActor = true;
 }
예제 #19
0
        public StandardGuiSet(Game _game, UserInput _keyboard, EditorLevel _editor)
            : base(_game, _keyboard, _editor)
        {
            tileClicks = new int[m_editor.Size.X, m_editor.Size.Y];

            spikyButton = NewChangeTileTypeButton("Spiky", 0, TileMap.SPIKY);
            blockButton = NewChangeTileTypeButton("Block", 1, TileMap.BLOCK);
            floorButton = NewChangeTileTypeButton("Floor", 2, TileMap.FLOOR);
            emptyButton = NewChangeTileTypeButton("Empty", 3, TileMap.EMPTY);

            playButton = NewButton("Play", 10, PlayLevel);

            fileButton = NewButton("File", 11, FileMode);
            locationsButton = NewButton("Locations", 12, LocationsMode);
        }
예제 #20
0
 public EditorCircleActor(EditorLevel level, XElement data)
     : base(level, data)
 {
     _bodyType = (BodyType)Loader.loadEnum(typeof(BodyType), data.Attribute("body_type"), (int)BodyType.Static);
     _destructible = Loader.loadBool(data.Attribute("destructible"), false);
     _chunkSpacingX = Loader.loadFloat(data.Attribute("chunk_spacing_x"), 1f);
     _chunkSpacingY = Loader.loadFloat(data.Attribute("chunk_spacing_y"), 1f);
     _destructibleSeed = Loader.loadInt(data.Attribute("destructible_seed"), 12345);
     _position = Loader.loadVector2(data.Attribute("position"), Vector2.Zero);
     _radius = Loader.loadFloat(data.Attribute("radius"), 1f);
     _density = Loader.loadFloat(data.Attribute("density"), 0.5f);
     _friction = Loader.loadFloat(data.Attribute("friction"), 1f);
     _restitution = Loader.loadFloat(data.Attribute("restitution"), 0f);
     _materialUID = Loader.loadString(data.Attribute("material_uid"), "default");
 }
예제 #21
0
 public EditorCircleActor(EditorLevel level)
     : base(level, ActorType.Circle, level.controller.getUnusedActorID())
 {
     _bodyType = BodyType.Static;
     _destructible = false;
     _chunkSpacingX = 1f;
     _chunkSpacingY = 1f;
     _destructibleSeed = 12345;
     _position = level.controller.worldMouse;
     _radius = 1f;
     _density = 0.5f;
     _friction = 1f;
     _restitution = 0f;
     _layerDepth = 0.1f;
     _materialUID = "default";
 }
예제 #22
0
 public EditorTerrainActor(EditorLevel level)
     : base(level, ActorType.Terrain)
 {
     _bodyType = BodyType.Static;
     _destructible = false;
     _chunkSpacingX = 1f;
     _chunkSpacingY = 1f;
     _chunkJitterX = 0.2f;
     _chunkJitterY = 0.2f;
     _destructibleSeed = 12345;
     _density = 0.5f;
     _friction = 1f;
     _restitution = 0f;
     _materialUID = "default";
     _blockTreeLimbs = false;
 }
예제 #23
0
 public EditorTerrainActor(EditorLevel level, XElement data)
     : base(level, data)
 {
     _bodyType = (BodyType)Loader.loadEnum(typeof(BodyType), data.Attribute("body_type"), (int)BodyType.Static);
     _destructible = Loader.loadBool(data.Attribute("destructible"), false);
     _wall = Loader.loadBool(data.Attribute("wall"), false);
     _chunkSpacingX = Loader.loadFloat(data.Attribute("chunk_spacing_x"), 1f);
     _chunkSpacingY = Loader.loadFloat(data.Attribute("chunk_spacing_y"), 1f);
     _chunkJitterX = Loader.loadFloat(data.Attribute("chunk_jitter_x"), 0.2f);
     _chunkJitterY = Loader.loadFloat(data.Attribute("chunk_jitter_y"), 0.2f);
     _destructibleSeed = Loader.loadInt(data.Attribute("destructible_seed"), 12345);
     _density = Loader.loadFloat(data.Attribute("density"), 0.5f);
     _friction = Loader.loadFloat(data.Attribute("friction"), 1f);
     _restitution = Loader.loadFloat(data.Attribute("restitution"), 0f);
     _materialUID = Loader.loadString(data.Attribute("material_uid"), "default");
     _blockTreeLimbs = Loader.loadBool(data.Attribute("block_tree_limbs"), false);
 }
예제 #24
0
        public OkCancelGuiSet(Game _game, UserInput _keyboard, EditorLevel _editor)
            : base(_game, _keyboard, _editor)
        {
            Button okButton = new Button(m_keyboard, "OK", m_game.Camera);
            okButton.Position = new Vector2f(okButton.Position.X, 1);
            okButton.Right();
            Console.WriteLine("ok button pos: {0}", okButton.Position);
            Button cancelButton = new Button(m_keyboard, "Cancel", m_game.Camera);
            cancelButton.Position = new Vector2f(cancelButton.Position.X, 3);
            cancelButton.Right();

            okButton.Pressed += Ok;
            cancelButton.Pressed += Cancel;

            items.Add(okButton);
            items.Add(cancelButton);
        }
예제 #25
0
 public EditorPrismaticActor(EditorLevel level, XElement data)
     : base(level, data)
 {
     int actorIdA = Loader.loadInt(data.Attribute("actor_a"), -1);
     int actorIdB = Loader.loadInt(data.Attribute("actor_b"), -1);
     _position = Loader.loadVector2(data.Attribute("position"), Vector2.Zero);
     _actorA = actorIdA == -1 ? null : level.getActor(actorIdA);
     _actorB = actorIdB == -1 ? null : level.getActor(actorIdB);
     Vector2 axis = Loader.loadVector2(data.Attribute("axis"), new Vector2(1, 0));
     _angle = (float)Math.Atan2(axis.Y, axis.X);
     lowerLimit = Loader.loadFloat(data.Attribute("lower_limit"), 0f);
     upperLimit = Loader.loadFloat(data.Attribute("upper_limit"), 0f);
     _autoCalculateForce = Loader.loadBool(data.Attribute("auto_calculate_force"), false);
     _autoForceDifference = Loader.loadFloat(data.Attribute("auto_force_difference"), 0f);
     _motorSpeed = Loader.loadFloat(data.Attribute("motor_speed"), 0f);
     _motorEnabled = Loader.loadBool(data.Attribute("motor_enabled"), false);
     _maxMotorForce = Loader.loadFloat(data.Attribute("max_motor_force"), 0f);
     initializeControls();
 }
예제 #26
0
        public FileGuiSet(Game _game, UserInput _keyboard, EditorLevel _editor)
            : base(_game, _keyboard, _editor)
        {
            saveButton = NewButton("Save", 3, SaveLevel);
            loadButton = NewButton("Load", 4, LoadLevel);
            filenameBox = NewTextBox("Filename", m_editor.filename, 5);

            widthBox = new NumberBox(m_keyboard, new Vector2f(5,2), m_game.Camera);
            widthBox.Position = new Vector2f(1, 4);
            items.Add(widthBox);
            widthMinusButton = new Button(m_keyboard, "-", m_game.Camera);
            widthMinusButton.Position = new Vector2f(1 + widthBox.Size.X + 0.5f, 4);
            items.Add(widthMinusButton);
            widthPlusButton = new Button(m_keyboard, "+", m_game.Camera);
            widthPlusButton.Position = new Vector2f(6.5f + widthMinusButton.Size.X + 0.5f, 4);
            items.Add(widthPlusButton);

            backButton = NewButton("Back", 0, GoBack);
        }
예제 #27
0
        void Setup()
        {
            Debug.Log("LightsOut: First Time Setup");

            EditorFacility facility = EditorDriver.editorFacility;
            EditorLevel    level    = 0;

            switch (facility)
            {
            case EditorFacility.SPH:
                // 0 = base, 0.5 = 1st, 1 = final
                level = (EditorLevel)(2 * ScenarioUpgradeableFacilities.GetFacilityLevel(SpaceCenterFacility.SpaceplaneHangar) + 1);
                break;

            case EditorFacility.VAB:
                // 0 = base, 0.5 = 1st, 1 = final
                level = (EditorLevel)(2 * ScenarioUpgradeableFacilities.GetFacilityLevel(SpaceCenterFacility.VehicleAssemblyBuilding) + 1);
                break;
            }

            Debug.Log("LightsOut: Entered " + facility + " " + level);

            // Set up ambient and shader managers
            GameObject[] gameObjects = FindObjectsOfType(typeof(GameObject)) as GameObject[];
            Camera[]     cameras     = FindObjectsOfType(typeof(Camera)) as Camera[];
            foreach (Camera camera in cameras)
            {
                if (camera.name == "sceneryCam")
                {
                    ambientManager = new LOAmbient(facility, level, gameObjects, camera, newLayer);
                }
            }
            shaderManager         = new LOShaders(facility, level, gameObjects);
            externalLightsManager = new LOExternalLights(facility, level);

            firstTime = false;
        }
예제 #28
0
 public EditorFluidActor(EditorLevel level, XElement data)
     : base(level, data)
 {
 }
예제 #29
0
 public EditorFluidActor(EditorLevel level)
     : base(level, ActorType.Fluid)
 {
 }
예제 #30
0
        public LOAmbient(EditorFacility facility, EditorLevel level, GameObject[] gameObjects, Camera camera, int layer)
        {
            mainCamera = camera;
            newLayer = layer;
            currentFacility = facility;

            originalCullingMask = camera.cullingMask;
            originalClearFlags = camera.clearFlags;
            originalAmbientLight = RenderSettings.ambientLight;
            originalSkybox = RenderSettings.skybox;
            originalLightmapData = LightmapSettings.lightmaps;
            originalAmbientMode = RenderSettings.ambientMode;

            // Create fake skybox
            skyCamera = new GameObject("NightSkyboxCamera", typeof(Camera));
            //            skyCamera.AddComponent<Camera>();
            skyCamera.GetComponent<Camera>().depth = mainCamera.depth - 1;
            skyCamera.GetComponent<Camera>().clearFlags = CameraClearFlags.Skybox;
            skyCamera.GetComponent<Camera>().cullingMask = 0;

            nightSkyboxMaterial = new Material(originalSkybox);

            // GalaxyTex_PositiveX should be viewed outside window
            // Debug.Log("LightsOut: Loading Night Sky Textures");
            foreach (Material material in Resources.FindObjectsOfTypeAll<Material>()) {
                Texture texture = material.mainTexture;
                if (texture) {
                    switch (material.name) {
                    case "ZP":
                        nightSkyboxMaterial.SetTexture("_FrontTex", material.mainTexture);
                        break;
                    case "ZN":
                        nightSkyboxMaterial.SetTexture("_BackTex", material.mainTexture);
                        break;
                    case "XP":
                        nightSkyboxMaterial.SetTexture("_LeftTex", material.mainTexture);
                        break;
                    case "XN":
                        nightSkyboxMaterial.SetTexture("_RightTex", material.mainTexture);
                        break;
                    case "YP":
                        nightSkyboxMaterial.SetTexture("_UpTex", material.mainTexture);
                        break;
                    case "YN":
                        nightSkyboxMaterial.SetTexture("_DownTex", material.mainTexture);
                        break;
                    default:
                        break;
                    }
                }
            }

            skyCamera.AddComponent<Skybox>();
            skyCamera.GetComponent<Skybox>().material = nightSkyboxMaterial;

            if (facility == EditorFacility.VAB) {
                switch (level) {
                case EditorLevel.Level1:
                    break;

                case EditorLevel.Level2:
                    break;

                case EditorLevel.Level3:
                    foreach (GameObject gameObject in gameObjects) {
                        ChangeLayersRecursively(gameObject, newLayer, "model_vab_interior_floor_cover_v20");
                    }
                    break;
                }
            }
            else if (facility == EditorFacility.SPH) {
                switch (level) {
                case EditorLevel.Level1:
                    break;

                case EditorLevel.Level2:
                    break;

                case EditorLevel.Level3:
                    foreach (GameObject gameObject in gameObjects) {
                        // These are all subsets of model_sph_interior_lights_v16
                        // Component_611_1 to 6 is window reflection
            //						ChangeLayersRecursively(gameObject, newLayer, "Component_611_1");
            //						ChangeLayersRecursively(gameObject, newLayer, "Component_611_2");
            //						ChangeLayersRecursively(gameObject, newLayer, "Component_611_3");
                        ChangeLayersRecursively(gameObject, newLayer, "Component_611_4");
                        ChangeLayersRecursively(gameObject, newLayer, "Component_611_5");
                        ChangeLayersRecursively(gameObject, newLayer, "Component_611_6");
                        ChangeLayersRecursively(gameObject, newLayer, "Component_749_1"); // Glow from Side Lights!
                        ChangeLayersRecursively(gameObject, newLayer, "Component_750_1"); // Lights!
                    }
                    break;
                }
            }
        }
예제 #31
0
 public void setProperties(EditorLevel level)
 {
     levelPropertiesGrid.SelectedObject = level;
 }
예제 #32
0
        public LOExternalLights(EditorFacility facility, EditorLevel level)
        {
            currentFacility = facility;
            currentLevel    = level;

            if (currentFacility == EditorFacility.VAB)
            {
                switch (currentLevel)
                {
                case EditorLevel.Level1:
                    //[LOG 17:53:55.152] Light 0: Scaledspace SunLight, RGBA(1.000, 1.000, 1.000, 1.000), Default OFF
                    //[LOG 17:53:55.153] Parent: SunLight
                    //[LOG 17:53:55.154] Light 1: SunLight, RGBA(1.000, 1.000, 1.000, 1.000), Default OFF
                    //[LOG 17:53:55.154] Parent: Scenery
                    //[LOG 17:53:55.155] Light 2: Directional light, RGBA(1.000, 1.000, 1.000, 1.000), Default ON
                    //[LOG 17:53:55.155] Parent: _UI
                    //[LOG 17:53:55.156] Light 3: Shadow Light, RGBA(1.000, 0.955, 0.896, 1.000), Default ON
                    //[LOG 17:53:55.156] Parent: Day Lights
                    //[LOG 17:53:55.157] Light 4: SpotlightSun, RGBA(1.000, 1.000, 1.000, 1.000), Default ON
                    //[LOG 17:53:55.158] Parent: Day Lights
                    //[LOG 17:53:55.158] Light 5: Spotlight, RGBA(1.000, 1.000, 1.000, 1.000), Default ON
                    //[LOG 17:53:55.159] Parent: Day Lights
                    lightsToChange = new List <LightToChange>()
                    {
                        new LightToChange()
                        {
                            name = "SpotlightCraft", parentName = "Day Lights"
                        },
                        new LightToChange()
                        {
                            name = "SpotlightSun", parentName = "VAB_interior_modern"
                        },                                                                                //
                        new LightToChange()
                        {
                            name = "Realtime_SpotlightScenery", parentName = "Lighting_Realtime"
                        },
                        new LightToChange()
                        {
                            name = "Shadow Light", parentName = "Day Lights"
                        }
                    };
                    break;

                case EditorLevel.Level2:
                    //[LOG 17:56:18.866] Light 0: Scaledspace SunLight, RGBA(1.000, 1.000, 1.000, 1.000), Default OFF
                    //[LOG 17:56:18.867] Parent: SunLight
                    //[LOG 17:56:18.867] Light 1: SunLight, RGBA(1.000, 1.000, 1.000, 1.000), Default OFF
                    //[LOG 17:56:18.868] Parent: Scenery
                    //[LOG 17:56:18.868] Light 2: Directional light, RGBA(1.000, 1.000, 1.000, 1.000), Default ON
                    //[LOG 17:56:18.869] Parent: _UI
                    //[LOG 17:56:18.869] Light 3: Shadow Light, RGBA(1.000, 0.955, 0.896, 1.000), Default ON
                    //[LOG 17:56:18.870] Parent: Day Lights
                    //[LOG 17:56:18.871] Light 4: SpotlightSun, RGBA(1.000, 1.000, 1.000, 1.000), Default ON
                    //[LOG 17:56:18.871] Parent: Day Lights
                    //[LOG 17:56:18.872] Light 5: roofFill, RGBA(1.000, 1.000, 1.000, 1.000), Default ON
                    //[LOG 17:56:18.872] Parent: Day Lights
                    //[LOG 17:56:18.873] Light 6: Spotlight, RGBA(1.000, 1.000, 1.000, 1.000), Default ON
                    //[LOG 17:56:18.873] Parent: Day Lights
                    //[LOG 17:56:18.874] Light 7: Spotlight, RGBA(1.000, 1.000, 1.000, 1.000), Default ON
                    //[LOG 17:56:18.875] Parent: Day Lights
                    lightsToChange = new List <LightToChange>()
                    {
                        new LightToChange()
                        {
                            name = "SpotlightCraft", parentName = "Day Lights"
                        },
                        new LightToChange()
                        {
                            name = "SpotlightSun", parentName = "VAB_interior_modern"
                        },                                                                                //
                        new LightToChange()
                        {
                            name = "Realtime_SpotlightScenery", parentName = "Lighting_Realtime"
                        },
                        new LightToChange()
                        {
                            name = "Shadow Light", parentName = "Day Lights"
                        }
                    };
                    break;

                case EditorLevel.Level3:
                    //[LOG 17:58:21.702] Light 0: Scaledspace SunLight, RGBA(1.000, 1.000, 1.000, 1.000), Default OFF
                    //[LOG 17:58:21.703] Parent: SunLight
                    //[LOG 17:58:21.703] Light 1: SunLight, RGBA(1.000, 1.000, 1.000, 1.000), Default OFF
                    //[LOG 17:58:21.704] Parent: Scenery
                    //[LOG 17:58:21.704] Light 2: Directional light, RGBA(1.000, 1.000, 1.000, 1.000), Default ON
                    //[LOG 17:58:21.705] Parent: _UI
                    //[LOG 17:58:21.705] Light 3: Shadow Light, RGBA(1.000, 0.955, 0.896, 1.000), Default ON
                    //[LOG 17:58:21.706] Parent: Day Lights
                    //[LOG 17:58:21.707] Light 4: SpotlightSun, RGBA(1.000, 1.000, 1.000, 1.000), Default ON
                    //[LOG 17:58:21.707] Parent: Day Lights
                    //[LOG 17:58:21.708] Light 5: Spotlight, RGBA(1.000, 0.236, 0.104, 1.000), Default ON
                    //[LOG 17:58:21.708] Parent: model_prop_truck_h03
                    //[LOG 17:58:21.709] Light 6: Spotlight, RGBA(1.000, 1.000, 1.000, 1.000), Default ON
                    //[LOG 17:58:21.710] Parent: Day Lights
                    //[LOG 17:58:21.710] Light 7: Spotlight, RGBA(1.000, 1.000, 1.000, 1.000), Default ON
                    //[LOG 17:58:21.711] Parent: model_vab_prop_truck_01
                    //[LOG 17:58:21.711] Light 8: Spotlight, RGBA(1.000, 1.000, 1.000, 1.000), Default ON
                    //[LOG 17:58:21.712] Parent: model_prop_truck_h02
                    //[LOG 17:58:21.712] Light 9: Spotlight, RGBA(1.000, 1.000, 1.000, 1.000), Default ON
                    //[LOG 17:58:21.713] Parent: Day Lights
                    lightsToChange = new List <LightToChange>()
                    {
                        new LightToChange()
                        {
                            name = "SpotlightCraft", parentName = "Day Lights"
                        },
                        new LightToChange()
                        {
                            name = "SpotlightSun", parentName = "VAB_interior_modern"
                        },                                                                                //
                        new LightToChange()
                        {
                            name = "Realtime_SpotlightScenery", parentName = "Lighting_Realtime"
                        },
                        new LightToChange()
                        {
                            name = "Shadow Light", parentName = "Day Lights"
                        }
                    };
                    break;
                }
            }
            else if (currentFacility == EditorFacility.SPH)
            {
                switch (currentLevel)
                {
                case EditorLevel.Level1:
                    //[LOG 17:54:50.069] Light 0: Scaledspace SunLight, RGBA(1.000, 1.000, 1.000, 1.000), Default OFF
                    //[LOG 17:54:50.070] Parent: SunLight
                    //[LOG 17:54:50.070] Light 1: SunLight, RGBA(1.000, 1.000, 1.000, 1.000), Default OFF
                    //[LOG 17:54:50.071] Parent: Scenery
                    //[LOG 17:54:50.072] Light 2: Directional light, RGBA(1.000, 1.000, 1.000, 1.000), Default ON
                    //[LOG 17:54:50.072] Parent: _UI
                    //[LOG 17:54:50.073] Light 3: SpotlightWindow, RGBA(0.866, 0.863, 0.903, 1.000), Default OFF
                    //[LOG 17:54:50.073] Parent: Editors_DayLights
                    //[LOG 17:54:50.074] Light 4: Shadow Light, RGBA(1.000, 0.955, 0.896, 1.000), Default ON
                    //[LOG 17:54:50.075] Parent: Editors_DayLights
                    //[LOG 17:54:50.075] Light 5: SpotlightCraft, RGBA(0.866, 0.863, 0.903, 1.000), Default ON
                    //[LOG 17:54:50.076] Parent: Editors_DayLights
                    //[LOG 17:54:50.076] Light 6: SpotlightExteriorSun, RGBA(0.866, 0.863, 0.903, 1.000), Default ON
                    //[LOG 17:54:50.077] Parent: Editors_DayLights
                    //[LOG 17:54:50.077] Light 7: SpotlightWindow, RGBA(0.866, 0.863, 0.903, 1.000), Default OFF
                    //[LOG 17:54:50.078] Parent: Editors_DayLights
                    lightsToChange = new List <LightToChange>()
                    {
                        new LightToChange()
                        {
                            name = "Realtime_SpotlightCraft", parentName = "Lighting_Realtime"
                        },
                        new LightToChange()
                        {
                            name = "Realtime_ExteriorSun", parentName = "Lighting_Realtime"
                        },
                        new LightToChange()
                        {
                            name = "Realtime_SpotlightScenery", parentName = "Lighting_Realtime"
                        },
                        new LightToChange()
                        {
                            name = "Realtime_Shadow Light", parentName = "Lighting_Realtime"
                        }
                    };
                    break;

                case EditorLevel.Level2:
                    //[LOG 17:57:04.716] Light 0: Scaledspace SunLight, RGBA(1.000, 1.000, 1.000, 1.000), Default OFF
                    //[LOG 17:57:04.717] Parent: SunLight
                    //[LOG 17:57:04.717] Light 1: SunLight, RGBA(1.000, 1.000, 1.000, 1.000), Default OFF
                    //[LOG 17:57:04.718] Parent: Scenery
                    //[LOG 17:57:04.718] Light 2: Directional light, RGBA(1.000, 1.000, 1.000, 1.000), Default ON
                    //[LOG 17:57:04.719] Parent: _UI
                    //[LOG 17:57:04.720] Light 3: SpotlightWindow, RGBA(0.866, 0.863, 0.903, 1.000), Default OFF
                    //[LOG 17:57:04.720] Parent: Editors_DayLights
                    //[LOG 17:57:04.721] Light 4: Shadow Light, RGBA(1.000, 0.955, 0.896, 1.000), Default ON
                    //[LOG 17:57:04.721] Parent: Editors_DayLights
                    //[LOG 17:57:04.722] Light 5: SpotlightCraft, RGBA(0.866, 0.863, 0.903, 1.000), Default ON
                    //[LOG 17:57:04.723] Parent: Editors_DayLights
                    //[LOG 17:57:04.723] Light 6: SpotlightExteriorSun, RGBA(0.866, 0.863, 0.903, 1.000), Default ON
                    //[LOG 17:57:04.724] Parent: Editors_DayLights
                    //[LOG 17:57:04.724] Light 7: SpotlightWindow, RGBA(0.866, 0.863, 0.903, 1.000), Default OFF
                    //[LOG 17:57:04.725] Parent: Editors_DayLights
                    lightsToChange = new List <LightToChange>()
                    {
                        new LightToChange()
                        {
                            name = "Realtime_SpotlightCraft", parentName = "Lighting_Realtime"
                        },
                        new LightToChange()
                        {
                            name = "Realtime_ExteriorSun", parentName = "Lighting_Realtime"
                        },
                        new LightToChange()
                        {
                            name = "Realtime_SpotlightScenery", parentName = "Lighting_Realtime"
                        },
                        new LightToChange()
                        {
                            name = "Realtime_Shadow Light", parentName = "Lighting_Realtime"
                        }
                    };
                    break;

                case EditorLevel.Level3:
                    //[LOG 17:59:41.825] Light 0: Scaledspace SunLight, RGBA(1.000, 1.000, 1.000, 1.000), Default OFF
                    //[LOG 17:59:41.826] Parent: SunLight
                    //[LOG 17:59:41.826] Light 1: SunLight, RGBA(1.000, 1.000, 1.000, 1.000), Default OFF
                    //[LOG 17:59:41.827] Parent: Scenery
                    //[LOG 17:59:41.828] Light 2: Directional light, RGBA(1.000, 1.000, 1.000, 1.000), Default ON
                    //[LOG 17:59:41.828] Parent: _UI
                    //[LOG 17:59:41.829] Light 3: Shadow Light, RGBA(1.000, 0.955, 0.896, 1.000), Default ON
                    //[LOG 17:59:41.829] Parent: Editors_DayLights
                    //[LOG 17:59:41.830] Light 4: SpotlightCraft, RGBA(0.866, 0.863, 0.903, 1.000), Default ON
                    //[LOG 17:59:41.831] Parent: Editors_DayLights
                    //[LOG 17:59:41.831] Light 5: Spotlight, RGBA(1.000, 0.236, 0.104, 1.000), Default ON
                    //[LOG 17:59:41.832] Parent: model_prop_truck_h03
                    //[LOG 17:59:41.832] Light 6: SpotlightExteriorSun, RGBA(0.866, 0.863, 0.903, 1.000), Default ON
                    //[LOG 17:59:41.833] Parent: Editors_DayLights
                    //[LOG 17:59:41.833] Light 7: SpotlightWindow, RGBA(0.866, 0.863, 0.903, 1.000), Default ON
                    //[LOG 17:59:41.834] Parent: Editors_DayLights
                    lightsToChange = new List <LightToChange>()
                    {
                        new LightToChange()
                        {
                            name = "Realtime_SpotlightCraft", parentName = "Lighting_Realtime"
                        },
                        new LightToChange()
                        {
                            name = "Realtime_ExteriorSun", parentName = "Lighting_Realtime"
                        },
                        new LightToChange()
                        {
                            name = "Realtime_SpotlightScenery", parentName = "Lighting_Realtime"
                        },
                        new LightToChange()
                        {
                            name = "Realtime_Shadow Light", parentName = "Lighting_Realtime"
                        }
                    };
                    break;
                }
            }
        }
예제 #33
0
 // createNewLevel
 public void createNewLevel()
 {
     _level = new EditorLevel(this, "new_level");
 }
예제 #34
0
        public LOShaders(EditorFacility facility, EditorLevel level, GameObject[] gameObjects)
        {
            List <ShaderToChange> shadersToFind = new List <ShaderToChange>();

            List <string> defaultShaders = new List <string>()
            {
                "KSP/Emissive/Specular",
                "KSP/Emissive/Bumped",
                "KSP/Emissive/Diffuse"
            };

            if (facility == EditorFacility.VAB)
            {
                switch (level)
                {
                case EditorLevel.Level1:
                {
                    //INTERIOR_VAB_lev2 1_MeshPart1
                    ShaderToChange shader = new ShaderToChange();
                    shader.path.Add("VAB_lev1_interior");
                    shader.path.Add("INTERIOR_VAB_lev2 1");
                    shader.name    = "INTERIOR_VAB_lev2 1_MeshPart1";
                    shader.shaders = new List <string>(defaultShaders);
                    shadersToFind.Add(shader);
                    break;
                }

                case EditorLevel.Level2:
                    // shader.path.Add("VAB_lev3_mainStructure");
                    break;

                case EditorLevel.Level3:
                    for (int i = 0; i < 3; i++)
                    {
                        ShaderToChange shader = new ShaderToChange();
                        shader.path.Add("VAB_Interior_Geometry");
                        shader.shaders = new List <string>(defaultShaders);
                        switch (i)
                        {
                        case 0:
                            shader.name = "model_vab_interior_props_v16";
                            break;

                        case 1:
                            shader.name = "model_vab_walls";
                            break;

                        case 2:
                            shader.name = "model_vab_windows";
                            break;
                        }
                        shadersToFind.Add(shader);
                    }
                    break;
                }
            }
            else if (facility == EditorFacility.SPH)
            {
                switch (level)
                {
                case EditorLevel.Level1:
                {
                    ShaderToChange shader = new ShaderToChange();
                    shader.path.Add("SPH-1_Interior");
                    shader.name    = "group37_polySurface813";
                    shader.shaders = new List <string>(defaultShaders);
                    shadersToFind.Add(shader);
                    break;
                }

                case EditorLevel.Level2:
                    for (int i = 0; i < 3; i++)
                    {
                        ShaderToChange shader = new ShaderToChange();
                        shader.shaders = new List <string>(defaultShaders);
                        switch (i)
                        {
                        case 0:
                            shader.path.Add("SPH_2_interior");
                            shader.name = "SPH_2_windows";
                            break;

                        case 1:
                            shader.path.Add("SPH_2_interior");
                            shader.name = "SPH_2_door3";
                            break;

                        case 2:
                            shader.path.Add("SPH_2_interior");
                            shader.name = "SPH_2_door4";
                            break;
                        }
                        shadersToFind.Add(shader);
                    }
                    break;

                case EditorLevel.Level3:
                    for (int i = 0; i < 2; i++)
                    {
                        ShaderToChange shader = new ShaderToChange();
                        shader.path.Add("SPH_Interior_Geometry");
                        shader.shaders = new List <string>(defaultShaders);
                        switch (i)
                        {
                        case 0:
                            shader.name = "model_sph_interior_main_v16";
                            break;

                        case 1:
                            shader.path.Add("model_sph_interior_gates_v16");
                            shader.name = "Component_755_1";
                            break;
                        }
                        shadersToFind.Add(shader);
                    }
                    break;
                }
            }

            foreach (ShaderToChange shader in shadersToFind)
            {
                foreach (GameObject gameObject in gameObjects)
                {
                    FindShader(gameObject, shader, 0);
                }
            }
        }
예제 #35
0
 public EditorPlayerSpawnActor(EditorLevel level, XElement data)
     : base(level, data)
 {
     _position = Loader.loadVector2(data.Attribute("position"), Vector2.Zero);
 }
예제 #36
0
 // addLevelSettings
 public void addLevelSettings(EditorLevel level)
 {
     _levelSettings = new LevelSettings();
     _levelSettings.setProperties(level);
     mainSplit.Panel1.Controls.Add(_levelSettings);
 }
예제 #37
0
 // addLevelSettings
 public void addLevelSettings(EditorLevel level)
 {
     _levelSettings = new LevelSettings();
     _levelSettings.setProperties(level);
     mainSplit.Panel1.Controls.Add(_levelSettings);
 }
예제 #38
0
        public void addLevel(EditorLevel level)
        {
            level.syncObjectManager();

            //Levels.Add(level);
        }
예제 #39
0
        //public void addInstance(InstanceDescriptor iDesc)
        //{
        //    iDescs.Add(iDesc);
        //}

        //public void clear()
        //{
        //    iDescs.Clear();
        //}


        //public State getState()
        //{
        //    State state = new State();
        //    state.Name = "test";

        //    foreach (InstanceDescriptor inst in iDescs)
        //    {
        //        state.GameObjects.Add(inst);
        //    }

        //    return state;
        //}

        //public void setState(State state)
        //{
        //    foreach (GameObject gob in state.GameObjects)
        //    {
        //        addInstance((InstanceDescriptor)gob);
        //    }
        //}

        /// <summary>
        /// Convert a level that is used in the editor, to a level that can be used
        /// by Whiskey.Core.
        /// </summary>
        /// <param name="dllPathIn">The path to the GameData.dll, that contains the type information</param>
        /// <param name="editorLevel">Some level that contains a set of instance descriptors</param>
        /// <returns>The path to the state file that Whiskey.Core will load</returns>
        public string convertToGobs(string dllPathIn, EditorLevel editorLevel)
        {
            AppDomain buildDomain = AppDomain.CreateDomain("BuildDomain");


            string statePath = ProjectManager.Instance.ActiveProject.PathBuildStates + Path.DirectorySeparatorChar + editorLevel.LevelName + ".state";

            buildDomain.SetData("level", editorLevel);
            buildDomain.SetData("color", editorLevel.BackgroundColor);
            buildDomain.SetData("dllPath", dllPathIn);
            buildDomain.SetData("statePath", statePath);

            editorLevel.getInstances().ForEach((i) => { i.updateTypeDescriptor(); });
            buildDomain.SetData("stateName", editorLevel.LevelName);
            buildDomain.SetData("iDescs", editorLevel.getInstances());
            buildDomain.SetData("scriptTable", ScriptManager.Instance.getScriptTable());

            try
            {
                buildDomain.DoCallBack(new CrossAppDomainDelegate(() =>
                {
                    try
                    {
                        string appDllPath     = (string)AppDomain.CurrentDomain.GetData("dllPath");
                        string appStateName   = (string)AppDomain.CurrentDomain.GetData("stateName");
                        string appStatePath   = (string)AppDomain.CurrentDomain.GetData("statePath");
                        Color backGroundColor = (Color)AppDomain.CurrentDomain.GetData("color");
                        EditorLevel eLevel    = (EditorLevel)AppDomain.CurrentDomain.GetData("level");
                        List <InstanceDescriptor> appIDescs = (List <InstanceDescriptor>)AppDomain.CurrentDomain.GetData("iDescs");
                        Dictionary <String, ScriptDescriptor> appScriptTable = (Dictionary <String, ScriptDescriptor>)AppDomain.CurrentDomain.GetData("scriptTable");


                        Assembly gameData = Assembly.LoadFrom(appDllPath);

                        GameLevel level = new GameLevel(appStateName);

                        level.init();
                        level.BloomSettings = eLevel.BloomSettings;

                        int c = 0;
                        List <GameObject> lGobs = new List <GameObject>();

                        try
                        {
                            foreach (InstanceDescriptor iDesc in appIDescs)
                            {
                                iDesc.X = iDesc.Position.X;
                                iDesc.Y = iDesc.Position.Y;

                                string typeName = iDesc.TypeDescriptorCompile.QualifiedName;
                                Type type       = gameData.GetType(typeName, true, false);

                                GameObject gob = (GameObject)type.GetConstructor
                                                     (new Type[] { typeof(ObjectManager) }).Invoke
                                                     (new object[] { level });

                                gob.Sprite.setRender(GameManager.Renderer);
                                gob.Sprite.setResources(GameManager.Resources);

                                foreach (PropertyDescriptor typeProp in iDesc.TypeDescriptorCompile.getPropertySetClone())
                                {
                                    Console.WriteLine("converting " + c + " " + typeProp.Name);
                                    PropertyInfo propInfo = gob.GetType().GetProperty(typeProp.Name);
                                    if (propInfo.SetMethod != null)
                                    {
                                        propInfo.GetSetMethod().Invoke(gob, new object[] { iDesc.getTypeValOfName(typeProp.Name).Value });
                                    }
                                }

                                //IS IT A DEBUG ONLY SPRITE?
                                if (iDesc.IsDebug)
                                {
                                    gob.Sprite.Visible = false;
                                }


                                gob.clearScripts();

                                foreach (String scriptName in iDesc.getScriptNames())
                                {
                                    Type scriptType   = gameData.GetType(appScriptTable[scriptName].QualifiedName, false);
                                    object script     = scriptType.GetConstructor(new Type[] { }).Invoke(new object[] { });
                                    Script megaScript = (Script)script;
                                    megaScript.Active = iDesc.getScriptActive(scriptName);
                                    gob.addScript(megaScript);
                                }


                                //TODO THIS IS A TEMPORARY WORK AROUND
                                gob.initializeObject();

                                lGobs.Add(gob);
                            }
                        }
                        catch (Exception e)
                        {
                            Console.WriteLine(e.GetType() + " |  " + e.Message);
                        }
                        //State state = new State();
                        //state.GameObjects = lGobs;
                        //state.BackgroundColor = backGroundColor;
                        //state.Name = appStateName;
                        //string filename = State.serialize(
                        //                    state,
                        //                    appStatePath);

                        level.BackgroundColor    = backGroundColor;
                        level.AmbientLight       = eLevel.AmbientLight;
                        level.LightingEnabled    = eLevel.LightingEnabled;
                        level.ShadowsEnabled     = eLevel.ShadowingEnabled;
                        level.BloomLightSettings = eLevel.LightBloomSettings;
                        level.ShaderParameters   = eLevel.ShaderParameters;
                        level.Layers             = eLevel.Layers;
                        string filename          = GameLevel.serialize(level, appStatePath);

                        //TempFilePath = filename;

                        //AppDomain.CurrentDomain.SetData("fileName", filename);
                    }
                    catch (Exception e)
                    {
                        Console.WriteLine(e.Message);
                        throw e;
                    }
                }));
            }
            catch (Exception e)
            {
                Console.WriteLine("conversion broken");
            }

            AppDomain.Unload(buildDomain);

            return(statePath);
        }
예제 #40
0
        public LOAmbient(EditorFacility facility, EditorLevel level, GameObject[] gameObjects, Camera camera, int layer)
        {
            mainCamera      = camera;
            newLayer        = layer;
            currentFacility = facility;

            originalCullingMask  = camera.cullingMask;
            originalClearFlags   = camera.clearFlags;
            originalAmbientLight = RenderSettings.ambientLight;
            originalSkybox       = RenderSettings.skybox;
            originalLightmapData = LightmapSettings.lightmaps;

            // Create fake skybox
            skyCamera = new GameObject("NightSkyboxCamera", typeof(Camera));
            skyCamera.camera.depth       = mainCamera.depth - 1;
            skyCamera.camera.clearFlags  = CameraClearFlags.Skybox;
            skyCamera.camera.cullingMask = 0;

            nightSkyboxMaterial = new Material(originalSkybox);

            // GalaxyTex_PositiveX should be viewed outside window
            Debug.Log("LightsOut: Loading Night Sky Textures");
            foreach (Material material in Resources.FindObjectsOfTypeAll <Material>())
            {
                Texture texture = material.mainTexture;
                if (texture)
                {
                    switch (material.name)
                    {
                    case "ZP (Instance)":
                        nightSkyboxMaterial.SetTexture("_FrontTex", material.mainTexture);
                        break;

                    case "ZN (Instance)":
                        nightSkyboxMaterial.SetTexture("_BackTex", material.mainTexture);
                        break;

                    case "XP (Instance)":
                        nightSkyboxMaterial.SetTexture("_LeftTex", material.mainTexture);
                        break;

                    case "XN (Instance)":
                        nightSkyboxMaterial.SetTexture("_RightTex", material.mainTexture);
                        break;

                    case "YP (Instance)":
                        nightSkyboxMaterial.SetTexture("_UpTex", material.mainTexture);
                        break;

                    case "YN (Instance)":
                        nightSkyboxMaterial.SetTexture("_DownTex", material.mainTexture);
                        break;

                    default:
                        break;
                    }
                }
            }

            skyCamera.AddComponent <Skybox>();
            skyCamera.GetComponent <Skybox>().material = nightSkyboxMaterial;

            if (facility == EditorFacility.VAB)
            {
                switch (level)
                {
                case EditorLevel.Level1:
                    break;

                case EditorLevel.Level2:
                    break;

                case EditorLevel.Level3:
                    foreach (GameObject gameObject in gameObjects)
                    {
                        ChangeLayersRecursively(gameObject, newLayer, "model_vab_interior_floor_cover_v20");
                    }
                    break;
                }
            }
            else if (facility == EditorFacility.SPH)
            {
                switch (level)
                {
                case EditorLevel.Level1:
                    break;

                case EditorLevel.Level2:
                    break;

                case EditorLevel.Level3:
                    foreach (GameObject gameObject in gameObjects)
                    {
                        // These are all subsets of model_sph_interior_lights_v16
                        // Component_611_1 to 6 is window reflection
                        ChangeLayersRecursively(gameObject, newLayer, "Component_611_1");
                        ChangeLayersRecursively(gameObject, newLayer, "Component_611_2");
                        ChangeLayersRecursively(gameObject, newLayer, "Component_611_3");
                        ChangeLayersRecursively(gameObject, newLayer, "Component_611_4");
                        ChangeLayersRecursively(gameObject, newLayer, "Component_611_5");
                        ChangeLayersRecursively(gameObject, newLayer, "Component_611_6");
                        //ChangeLayersRecursively(gameObject, newLayer, "Component_749_1"); // Glow from Side Lights!
                        //ChangeLayersRecursively(gameObject, newLayer, "Component_750_1"); // Lights!
                    }
                    break;
                }
            }
        }
예제 #41
0
 // closeLevel
 public void closeLevel()
 {
     _level = null;
     _levelView.Invalidate();
 }
예제 #42
0
 public EditorPlayerSpawnActor(EditorLevel level)
     : base(level, ActorType.PlayerSpawn, level.controller.getUnusedActorID())
 {
     _position = level.controller.worldMouse;
 }