public static PlungerAuthoring SetupGameObject(this Plunger plunger, GameObject obj, RenderObjectGroup rog)
        {
            var ic = obj.AddComponent <PlungerAuthoring>().SetItem(plunger);

            var rod = obj.transform.Find(PlungerMeshGenerator.RodName);

            if (rod != null)
            {
                rod.gameObject.AddComponent <PlungerRodAuthoring>();
            }

            var spring = obj.transform.Find(PlungerMeshGenerator.SpringName);

            if (spring != null)
            {
                spring.gameObject.AddComponent <PlungerSpringAuthoring>();
            }

            var flat = obj.transform.Find(PlungerMeshGenerator.FlatName);

            if (flat != null)
            {
                flat.gameObject.AddComponent <PlungerFlatAuthoring>();
            }

            obj.AddComponent <ConvertToEntity>();
            return(ic as PlungerAuthoring);
        }
示例#2
0
 public void DettachPlunger(Plunger plunger)
 {
     if (this.listPlunger.Contains(plunger))
     {
         this.listPlunger.Remove(plunger);
     }
 }
示例#3
0
 private void Awake()
 {
     plunger = GameObject.Find("Plunger").GetComponent <Plunger>();
     Debug.Log(plunger);
     Debug.Log(gameObject.name);
     slider = GameObject.Find("PlungerForce").GetComponent <Slider>();
 }
示例#4
0
 public void AttachPlunger(Plunger plunger)
 {
     if (!this.listPlunger.Contains(plunger))
     {
         this.listPlunger.Add(plunger);
     }
 }
示例#5
0
        public void RegisterPlunger(Plunger plunger, Entity entity, GameObject go)
        {
            var plungerApi = new PlungerApi(plunger, entity, this);

            _tableApi.Plungers[plunger.Name] = plungerApi;
            _initializables.Add(plungerApi);
            _rotatables[entity] = plungerApi;
        }
        public static ConvertedItem SetupGameObject(this Plunger plunger, GameObject obj)
        {
            var mainAuthoring = obj.AddComponent <PlungerAuthoring>().SetItem(plunger);
            var meshAuthoring = new List <IItemMeshAuthoring>();
            PlungerColliderAuthoring colliderAuthoring = null;

            switch (plunger.SubComponent)
            {
            case ItemSubComponent.None: {
                colliderAuthoring = obj.AddComponent <PlungerColliderAuthoring>();
                switch (plunger.Data.Type)
                {
                case PlungerType.PlungerTypeFlat:
                    meshAuthoring.Add(ConvertedItem.CreateChild <PlungerFlatMeshAuthoring>(obj, PlungerMeshGenerator.Flat));
                    break;

                case PlungerType.PlungerTypeCustom:
                    meshAuthoring.Add(ConvertedItem.CreateChild <PlungerSpringMeshAuthoring>(obj, PlungerMeshGenerator.Spring));
                    meshAuthoring.Add(ConvertedItem.CreateChild <PlungerRodMeshAuthoring>(obj, PlungerMeshGenerator.Rod));
                    break;

                case PlungerType.PlungerTypeModern:
                    meshAuthoring.Add(ConvertedItem.CreateChild <PlungerRodMeshAuthoring>(obj, PlungerMeshGenerator.Rod));
                    break;
                }
                break;
            }

            case ItemSubComponent.Collider: {
                Logger.Warn("Cannot parent a plunger collider to a different object than a plunger!");
                break;
            }

            case ItemSubComponent.Mesh: {
                Logger.Warn("Cannot parent a plunger mesh to a different object than a plunger!");
                break;
            }

            default:
                throw new ArgumentOutOfRangeException();
            }
            obj.AddComponent <ConvertToEntity>();
            return(new ConvertedItem(mainAuthoring, meshAuthoring, colliderAuthoring));
        }
示例#7
0
    //private void OnGUI()
    //{
    //    GUI.Label(new Rect(10, 10, 100, 80), "test float: " + testFloat);
    //}

    public void Save()
    {
        BinaryFormatter binaryFormatter = new BinaryFormatter();
        FileStream      dataFile        = File.Create(Application.persistentDataPath + "/TrainOfBotDataFile.dat");

        Data data = new Data();

        data.testFloat               = 0.0f;
        data.storageRoomBoxPos       = StorageRoomBox.FindObjectOfType <Transform>().position;
        data.testCharacterCanRecieve = true;
        data.testCharacterCanGive    = true;

        //ITEMS
        data.bottleOfBoltsTaken          = BottleOfBolts.FindObjectOfType <BottleOfBolts>().taken;
        data.cabinetKeyTaken             = CabinetKey.FindObjectOfType <CabinetKey>().taken;
        data.chefsSpoonTaken             = ChefsSpoon.FindObjectOfType <ChefsSpoon>().taken;
        data.cookedMechanicalDinnerTaken = CookedMechanicalDinner.FindObjectOfType <CookedMechanicalDinner>().taken;
        data.earmuffsTaken = Earmuffs.FindObjectOfType <Earmuffs>().taken;
        data.frozenMechanicalDinnerTaken = FrozenMechanicalDinner.FindObjectOfType <FrozenMechanicalDinner>().taken;
        data.gasCanisterTaken            = GasCanister.FindObjectOfType <GasCanister>().taken;
        data.passengersEyeTaken          = PassengersEye.FindObjectOfType <PassengersEye>().taken;
        data.plungerTaken = Plunger.FindObjectOfType <Plunger>().taken;
        data.rattleTaken  = Rattle.FindObjectOfType <Rattle>().taken;
        data.valveTaken   = Valve.FindObjectOfType <Valve>().taken;

        data.plungerThrown = Plunger.FindObjectOfType <Plunger>().thrown;

        //NPCS
        data.earmuffsGuyCanGive    = EarmuffsGuy.FindObjectOfType <EarmuffsGuy>().canGiveItem;
        data.earmuffsGuyCanRecieve = EarmuffsGuy.FindObjectOfType <EarmuffsGuy>().canRecieveItem;

        data.eyeRobotCanGive    = EyeRobot.FindObjectOfType <EyeRobot>().canGiveItem;
        data.eyeRobotCanRecieve = EyeRobot.FindObjectOfType <EyeRobot>().canRecieveItem;

        data.chefCanGive    = Chef.FindObjectOfType <Chef>().canGiveItem;
        data.chefCanRecieve = Chef.FindObjectOfType <Chef>().canRecieveItem;
        data.chefFrozen     = Chef.FindObjectOfType <Chef>().frozen;

        data.womanRobotCanGive    = WomanRobot.FindObjectOfType <WomanRobot>().canGiveItem;
        data.womanRobotCanRecieve = WomanRobot.FindObjectOfType <WomanRobot>().canRecieveItem;

        data.cabinetCanGive    = Cabinet.FindObjectOfType <Cabinet>().canGiveItem;
        data.cabinetCanRecieve = Cabinet.FindObjectOfType <Cabinet>().canRecieveItem;

        data.toiletcanRecieve = Toilet.FindObjectOfType <Toilet>().canRecieveItem;

        data.hoboThrew = HoboRobot.FindObjectOfType <HoboRobot>().hoboThrew;

        data.nozzleCanRecieve = Nozzle.FindObjectOfType <Nozzle>().canRecieveItem;

        //ROBOT SPECIFIC
        data.robotLeftBathroom = BathroomRobot.FindObjectOfType <BathroomRobot>().leftBathroom;

        //DOG
        data.dogEating   = Dog.FindObjectOfType <Dog>().eating;
        data.dogLocation = Dog.FindObjectOfType <Transform>().position;

        //DOG BOWL
        data.bowlHasFood  = DogBowl.FindObjectOfType <DogBowl>().hasFood;
        data.dinnerActive = DogBowl.FindObjectOfType <DogBowl>().dinnerActive;

        //WORKTABLE
        data.canRecieveChefsSpoon = Worktable.FindObjectOfType <Worktable>().canRecieveChefsSpoon;
        data.canRecieveBottle     = Worktable.FindObjectOfType <Worktable>().canRecieveBottle;
        data.tableCanGiveItem     = Worktable.FindObjectOfType <Worktable>().canGiveItem;

        //STOVE
        data.canRecieveFMD         = Stove.FindObjectOfType <Stove>().canRecieveFMD;
        data.canRecieveGasCanister = Stove.FindObjectOfType <Stove>().canRecieveGasCanister;
        data.stoveCanGiveItem      = Stove.FindObjectOfType <Stove>().canGiveItem;

        //        Data data = new Data
        //        {
        //            testFloat = 0.0f
        //        };

        binaryFormatter.Serialize(dataFile, data);
        dataFile.Close();
    }
        /// <summary>
        /// Функция моделирования работы плунжерного лифта
        /// </summary>
        /// <param name="eps">Точность с которой будет расчитываться забойное давление (безразмерная)</param>
        /// <param name="plunger">Плунжер</param>
        public PlungerModelingResult ModelingPlunger(double eps, Plunger plunger)
        {
            PlungerModelingResult mr = new PlungerModelingResult();

            mr.StartGasRate = Modeling(eps, out mr.StartBtmhPressure, out mr.StartWaterRate, out mr.StartNglRate);

            double P_avg = (WellheadPressure + mr.StartBtmhPressure) / 2;

            mr.CritQ = CalcCriticalGasRate(P_avg);

            //создается новый Tubing чтобы не перезаписывать SegmentFlows
            Tubing tubing = new Tubing(Tubing);

            mr.CloseGasRate = (mr.StartGasRate - mr.CritQ) / 2;
            double step = (mr.StartGasRate - mr.CritQ) / 4;
            int    i    = 0;

            do
            {
                i++;
                mr.CloseBtmhPressure = Layer.CalcBottomholePressure(mr.CloseGasRate);

                mr.CloseWaterRate = Layer.CalcWaterRate(mr.CloseBtmhPressure);
                double closeNglVolumeRate = NglFluid.CalcVolumeRate(Layer.NGLFactor, mr.CloseGasRate);
                mr.CloseNglRate = CalcNglRate(mr.CloseGasRate);
                LiquidFlow liquidFlow = new LiquidFlow(closeNglVolumeRate, NglFluid, mr.CloseWaterRate, WaterFluid);

                GasFlow gasFlow = new GasFlow(GasFluid, mr.CloseGasRate, WellheadPressure, WellheadTemperature);

                //Давление выше столба жидкость высотой h
                double Ph = tubing.CalcBottomholePressure(gasFlow, liquidFlow, BottomholeTemperature);
                //разница  (P2 - P1) = rho*g*h создается столбом жидкости на забое
                mr.ColumnHeight = WaterFluid.CalcColumnHeight(mr.CloseBtmhPressure - Ph);

                // Объем столба воды над плунжером
                mr.ColumnWaterVolume = WaterFluid.CalcVolumeOfColumnHeight(mr.ColumnHeight, Tubing.CrossSectionArea);

                //Находим затрубное давление необходимое для поднятия плунжера с водой
                double Pc_max = plunger.CalcMaxCasingPressure(WellheadPressure, Tubing.Length, mr.ColumnWaterVolume,
                                                              Tubing.AnnularCrossSectionArea, Tubing.CrossSectionArea);
                //Забойное давление необходимое для поднятия плунжера с водой
                mr.OpenBtmhPressure = CalcStaticBottomholePressureByAnnularTubing(Pc_max);
                if (mr.OpenBtmhPressure < Layer.ReservoirPressure)
                {
                    return(mr);
                }

                if (Ph > mr.CloseBtmhPressure)
                {
                    mr.CloseGasRate = mr.CloseGasRate - step;
                }
                else
                {
                    mr.CloseGasRate = mr.CloseGasRate + step;
                }

                step = step / 2;
                if (i > 100)
                {
                    break;
                }
            } while (true);

            mr = new PlungerModelingResult();
            return(mr);
        }
示例#9
0
        public KitchenModel()
        {
            personnel = new List <Sprite>();
            objects   = new List <Sprite>();

            Desk                 kitchenDesk            = new Desk();
            Sink                 kitchenSink            = new Sink();
            HeatingPlate         plaque1                = new HeatingPlate();
            HeatingPlate         plaque2                = new HeatingPlate();
            HeatingPlate         plaque3                = new HeatingPlate();
            Dishwasher           laveVaisselle          = new Dishwasher();
            LaundryMachine       laveLinge              = new LaundryMachine();
            DishesStock          stockVaisselle         = new DishesStock();
            DirtyDishesStock     stockVaiselleSale      = new DirtyDishesStock();
            Fridge               kitchenFridge          = new Fridge();
            KitchenMaterialStock kitchenMaterialStock   = new KitchenMaterialStock();
            IngredientStock      kitchenIngredientStock = new IngredientStock();

            objects.Add(kitchenDesk.Sprite);
            objects.Add(kitchenSink.Sprite);
            objects.Add(plaque1.Sprite);
            objects.Add(plaque2.Sprite);
            objects.Add(plaque3.Sprite);
            objects.Add(laveVaisselle.Sprite);
            objects.Add(laveLinge.Sprite);
            objects.Add(stockVaisselle.Sprite);
            objects.Add(stockVaiselleSale.Sprite);
            objects.Add(kitchenFridge.Sprite);
            objects.Add(kitchenMaterialStock.Sprite);
            objects.Add(kitchenIngredientStock.Sprite);


            Plunger plongeur   = new Plunger(kitchenDesk, stockVaiselleSale, stockVaisselle, laveVaisselle, laveLinge, kitchenSink);
            Clerk   commis1    = new Clerk(kitchenMaterialStock, kitchenIngredientStock, kitchenFridge, kitchenSink, "GabinCuisto");
            Clerk   commis2    = new Clerk(kitchenMaterialStock, kitchenIngredientStock, kitchenFridge, kitchenSink, "MaxCuisto");
            Cooker  cuisinier1 = new Cooker(commis1, commis2, kitchenMaterialStock, kitchenIngredientStock, kitchenFridge, "BenjaminCuisto");
            Cooker  cuisinier2 = new Cooker(commis1, commis2, kitchenMaterialStock, kitchenIngredientStock, kitchenFridge, "PirminCuisto");
            Chef    chef       = new Chef(cuisinier1, cuisinier2, kitchenDesk);


            personnel.Add(chef.Sprite);
            personnel.Add(cuisinier1.Sprite);
            personnel.Add(cuisinier2.Sprite);
            personnel.Add(commis1.Sprite);
            personnel.Add(commis2.Sprite);
            personnel.Add(plongeur.Sprite);


            socket = new SocketApp();

            SocketListener.kitchenDesk = kitchenDesk;

            // Ajouter des abonnés observer à l'observable Comptoir
            kitchenDesk.AttachChef(chef);
            kitchenDesk.AttachPlunger(plongeur);
            kitchenDesk.AttachSocket(socket);



            //// Créations des Ingrédients
            //Ingredient steak = new Ingredient("Steak", "Viande");
            //Ingredient poulet = new Ingredient("Poulet", "Viande");
            //Ingredient poisson = new Ingredient("Poisson", "Poisson");
            //Ingredient pain = new Ingredient("Pain", "Pain");
            //Ingredient salade = new Ingredient("Salade", "Vegetables");
            //Ingredient tomate = new Ingredient("Tomate", "Vegetables");
            //Ingredient oignon = new Ingredient("Oignon", "Vegetables");
            //Ingredient cheddar = new Ingredient("Cheddar", "Frommage");
            //Ingredient raclette = new Ingredient("Raclette", "Fromage");
            //Ingredient sauce = new Ingredient("Sauce", "Sauce");

            //// Instanciation Object Cuisine Material
            //KitchenKnife kitchenKnife = new KitchenKnife();
            //Pans kitchenCasserolle = new Pans();
            //Stove kitchenPoêle = new Stove();
            //WoodenSpoon kitchenCuillière = new WoodenSpoon();
            //SaladBowl kitchenBolSalade = new SaladBowl();


            //// Creation des etapes des recettes
            //RecipeStep prepareSteak = new RecipeStep("Cuire le Steak", 10);
            //prepareSteak.IngredientQuantities.Add(new IngredientQuantity(1, steak));
            //prepareSteak.ListUstencils.Add(kitchenPoêle);

            //RecipeStep preparePoulet = new RecipeStep("Cuire le Poulet", 10);
            //preparePoulet.IngredientQuantities.Add(new IngredientQuantity(1, poulet));
            //preparePoulet.ListUstencils.Add(kitchenPoêle);

            //RecipeStep preparePoisson = new RecipeStep("Cuire le Poisson", 10);
            //preparePoisson.IngredientQuantities.Add(new IngredientQuantity(1, poisson));
            //preparePoisson.ListUstencils.Add(kitchenPoêle);

            //RecipeStep prepareVegetables = new RecipeStep("Preparer les légumes", 5);
            //prepareVegetables.IngredientQuantities.Add(new IngredientQuantity(1, salade));
            //prepareVegetables.IngredientQuantities.Add(new IngredientQuantity(2, tomate));
            //prepareVegetables.IngredientQuantities.Add(new IngredientQuantity(1, oignon));
            //prepareVegetables.ListUstencils.Add(kitchenBolSalade);
            //prepareVegetables.ListUstencils.Add(kitchenCuillière);
            //prepareVegetables.ListUstencils.Add(kitchenKnife);

            //RecipeStep prepareRaclette = new RecipeStep("Préparer le frommage à Raclette", 5);
            //prepareRaclette.IngredientQuantities.Add(new IngredientQuantity(2, raclette));
            //prepareRaclette.ListUstencils.Add(kitchenKnife);

            //RecipeStep prepareCheddar = new RecipeStep("Préparer le Cheddar", 5);
            //prepareCheddar.IngredientQuantities.Add(new IngredientQuantity(2, cheddar));
            //prepareCheddar.ListUstencils.Add(kitchenKnife);

            //RecipeStep assemblerBurger = new RecipeStep("Assembler le Burger", 5);
            //assemblerBurger.IngredientQuantities.Add(new IngredientQuantity(1, pain));
            //assemblerBurger.IngredientQuantities.Add(new IngredientQuantity(1, sauce));


            //// Creations des plats
            //Dish burgerClassic = new Dish(1, "Burger Classique");
            //burgerClassic.Recipe.Add(prepareSteak);
            //burgerClassic.Recipe.Add(prepareVegetables);
            //burgerClassic.Recipe.Add(prepareCheddar);
            //burgerClassic.Recipe.Add(assemblerBurger);

            //Dish burgerChicken = new Dish(2, "Burger Poulet");
            //burgerChicken.Recipe.Add(preparePoulet);
            //burgerChicken.Recipe.Add(prepareVegetables);
            //burgerChicken.Recipe.Add(prepareCheddar);
            //burgerChicken.Recipe.Add(assemblerBurger);

            //Dish burgerMountain = new Dish(3, "Burger Montagnard");
            //burgerMountain.Recipe.Add(prepareSteak);
            //burgerMountain.Recipe.Add(prepareVegetables);
            //burgerMountain.Recipe.Add(prepareCheddar);
            //burgerMountain.Recipe.Add(assemblerBurger);

            //Dish burgerVegan = new Dish(4, "Burger Vegan");
            //burgerVegan.Recipe.Add(preparePoisson);
            //burgerVegan.Recipe.Add(prepareVegetables);
            //burgerVegan.Recipe.Add(prepareCheddar);
            //burgerVegan.Recipe.Add(prepareRaclette);
            //burgerVegan.Recipe.Add(assemblerBurger);

            DomainApp domainApp = new DomainApp();

            Console.WriteLine("Instanciation du Controller sans problèmes");
        }
示例#10
0
        internal static IVpxPrefab InstantiatePrefab(this Plunger plunger)
        {
            var prefab = UnityEngine.Resources.Load <GameObject>("Prefabs/Plunger");

            return(new VpxPrefab <Plunger, PlungerData, PlungerComponent>(prefab, plunger));
        }