public void clickSave()
        {
            InitialConfigLoader   loader = new InitialConfigLoader();
            InitialConfigurations config = loader.loadInitialConfig();

            //Create new Building Config Part
            BuildingConfigurations newbuildingconfig = new BuildingConfigurations();

            InputField min = buildingMenu.transform.Find("Panel").Find("HeightComponent").Find("InputField_Min").GetComponent <InputField>();

            newbuildingconfig.minheight = float.Parse(min.text);
            InputField max = buildingMenu.transform.Find("Panel").Find("HeightComponent").Find("InputField_Max").GetComponent <InputField>();

            newbuildingconfig.maxheight    = float.Parse(max.text);
            newbuildingconfig.defaultSkins = materialList;

            Transform contentPanel = buildingMenu.transform.Find("Panel").Find("ScrollRect").Find("Content Panel");
            int       index        = 0;

            foreach (Transform child in contentPanel)
            {
                Toggle t = child.Find("Panel").Find("Toggle").GetComponent <Toggle>();
                newbuildingconfig.defaultSkins[index].isActive = t.isOn;
                index++;
            }


            config.buildingConfig = newbuildingconfig;

            loader.saveInitialConfig(Path.Combine(Application.persistentDataPath, "ConfigFiles/initialConfig.xml"), config);

            buildingMenu.SetActive(false);
        }
        private void loadConfig()
        {
            InitialConfigLoader   loader = new InitialConfigLoader();
            InitialConfigurations config = loader.loadInitialConfig();

            configLoadHelper(config);
        }
        public void ClickSave()
        {
            InitialConfigLoader   loader = new InitialConfigLoader();
            InitialConfigurations config = loader.loadInitialConfig();

            List <BarrierConfigurations> newBarrierConfig = new List <BarrierConfigurations>();

            for (int i = 0; i < config.barrierConfig.Count; i++)
            {
                string GOname   = "BarrierSkin " + i;
                var    skinitem = barrierMenu.transform.Find("Panel").Find("Scroll Rect").Find("Content Panel").Find(GOname).Find("Panel");

                BarrierConfigurations barrieritem = new BarrierConfigurations();

                barrieritem.name   = skinitem.Find("TextName").GetComponent <Text>().text;
                barrieritem.width  = float.Parse(skinitem.Find("InputField_Thickness").GetComponent <InputField>().text);
                barrieritem.height = float.Parse(skinitem.Find("InputField_Height").GetComponent <InputField>().text);
                barrieritem.Path   = materialPaths[i];
                if (isTextureChanged[i])
                {
                    Material  mat      = (Material)Resources.Load(barrieritem.Path);
                    byte[]    fileData = File.ReadAllBytes(texturePaths[i]);
                    Texture2D tex      = new Texture2D(2, 2);
                    tex.LoadImage(fileData);
                    mat.mainTexture      = tex;
                    mat.mainTextureScale = new Vector2(5, 1);
                }
            }

            config.barrierConfig = newBarrierConfig;
            loader.saveInitialConfig(Path.Combine(Application.persistentDataPath, "ConfigFiles/initialConfig.xml"), config);


            barrierMenu.SetActive(false);
        }
        public void ClickReset()
        {
            InitialConfigLoader   loader    = new InitialConfigLoader();
            InitialConfigurations config    = loader.loadInitialConfig();
            InitialConfigurations tmpConfig = loader.fillConfig();

            config.highwayConfig = tmpConfig.highwayConfig;
            configLoadHelper(config);
        }
        public void clickReset()
        {
            InitialConfigLoader   loader    = new InitialConfigLoader();
            InitialConfigurations config    = loader.loadInitialConfig();
            InitialConfigurations tmpconfig = loader.fillConfig();

            config.buildingConfig = tmpconfig.buildingConfig;
            configLoadHelper(config);
        }
        public void ClickSave()
        {
            InitialConfigLoader   loader = new InitialConfigLoader();
            InitialConfigurations config = loader.loadInitialConfig();

            List <HighwayConfigurations> newHighwayConfig = new List <HighwayConfigurations>();

            for (int i = 0; i < config.highwayConfig.Count; i++)
            {
                string GOname   = "HighwaySkin " + i;
                var    skinitem = highwayMenu.transform.Find("Panel").Find("Scroll Rect").Find("Content Panel").Find(GOname).Find("Panel");

                HighwayConfigurations highwayitem = new HighwayConfigurations();

                highwayitem.type              = skinitem.Find("Text_Type").GetComponent <Text>().text;
                highwayitem.size              = float.Parse(skinitem.Find("InputField_Width").GetComponent <InputField>().text);
                highwayitem.leftSidewalk      = skinitem.Find("ToggleLeftSideWalk").GetComponent <Toggle>().isOn;
                highwayitem.rightSidewalk     = skinitem.Find("ToggleRightSideWalk").GetComponent <Toggle>().isOn;
                highwayitem.leftSidewalkSize  = float.Parse(skinitem.Find("InputField LeftSize").GetComponent <InputField>().text);
                highwayitem.rightSidewalkSize = float.Parse(skinitem.Find("InputField RightSize").GetComponent <InputField>().text);
                highwayitem.materialPath      = materialPaths[i];

                if (isTextureChanged[i])
                {
                    Material  mat      = (Material)Resources.Load(highwayitem.materialPath);
                    byte[]    fileData = File.ReadAllBytes(texturePaths[i]);
                    Texture2D tex      = new Texture2D(2, 2);
                    tex.LoadImage(fileData);
                    mat.mainTexture      = tex;
                    mat.mainTextureScale = new Vector2(5, 1);
                }

                newHighwayConfig.Add(highwayitem);
            }

            config.highwayConfig = newHighwayConfig;
            loader.saveInitialConfig(Path.Combine(Application.persistentDataPath, "ConfigFiles/initialConfig.xml"), config);


            highwayMenu.SetActive(false);
        }
        private void configLoadHelper(InitialConfigurations config)
        {
            List <HighwayConfigurations> conf = config.highwayConfig;

            texturePaths     = new string[conf.Count];
            materialPaths    = new string[conf.Count];
            isTextureChanged = new bool[conf.Count];

            Transform parentContent = highwayMenu.transform.Find("Panel").Find("Scroll Rect").Find("Content Panel");

            var children = new List <GameObject>();

            foreach (Transform child in parentContent)
            {
                children.Add(child.gameObject);
            }
            children.ForEach(child => Destroy(child));

            for (int i = 0; i < conf.Count; i++)
            {
                isTextureChanged[i] = false;
                texturePaths[i]     = "";
                materialPaths[i]    = conf[i].materialPath;

                GameObject skinItem = (GameObject)MonoBehaviour.Instantiate(Resources.Load("Prefabs/Menu/HighwaySkin"));
                skinItem.name = "HighwaySkin " + i;
                skinItem.transform.SetParent(parentContent);

                Texture2D colorText;
                Material  mat = (Material)Resources.Load(conf[i].materialPath);
                colorText = (Texture2D)mat.mainTexture;
                skinItem.transform.Find("Panel").Find("RawImage").GetComponent <RawImage>().texture = colorText;
                skinItem.transform.Find("Panel").Find("Text_Type").GetComponent <Text>().text       = conf[i].type;
                skinItem.transform.Find("Panel").Find("Text_ChangeTexture").GetComponent <Button>().onClick.AddListener(delegate { EditTextureClick(skinItem); });
                skinItem.transform.Find("Panel").Find("InputField_Width").GetComponent <InputField>().text     = conf[i].size.ToString();
                skinItem.transform.Find("Panel").Find("InputField LeftSize").GetComponent <InputField>().text  = conf[i].leftSidewalkSize.ToString();
                skinItem.transform.Find("Panel").Find("InputField RightSize").GetComponent <InputField>().text = conf[i].rightSidewalkSize.ToString();
                skinItem.transform.Find("Panel").Find("ToggleLeftSideWalk").GetComponent <Toggle>().isOn       = conf[i].leftSidewalk;
                skinItem.transform.Find("Panel").Find("ToggleRightSideWalk").GetComponent <Toggle>().isOn      = conf[i].rightSidewalk;
            }
        }
        private void configLoadHelper(InitialConfigurations config)
        {
            List <BarrierConfigurations> conf = config.barrierConfig;

            texturePaths     = new string[conf.Count];
            materialPaths    = new string[conf.Count];
            isTextureChanged = new bool[conf.Count];

            Transform parentContent = barrierMenu.transform.Find("Panel").Find("Scroll Rect").Find("Content Panel");

            var children = new List <GameObject>();

            foreach (Transform child in parentContent)
            {
                children.Add(child.gameObject);
            }
            children.ForEach(child => Destroy(child));

            for (int i = 0; i < conf.Count; i++)
            {
                isTextureChanged[i] = false;
                texturePaths[i]     = "";
                materialPaths[i]    = conf[i].Path;

                GameObject skinItem = (GameObject)MonoBehaviour.Instantiate(Resources.Load("Prefabs/Menu/BarrierSkin"));
                skinItem.name = "BarrierSkin " + i;
                skinItem.transform.SetParent(parentContent);

                Texture2D colorText;
                Material  mat = (Material)Resources.Load(config.barrierConfig[i].Path);
                colorText = (Texture2D)mat.mainTexture;
                skinItem.transform.Find("Panel").Find("RawImage").GetComponent <RawImage>().texture = colorText;
                skinItem.transform.Find("Panel").Find("TextName").GetComponent <Text>().text        = config.barrierConfig[i].name;
                skinItem.transform.Find("Panel").Find("TextTextureChange").GetComponent <Button>().onClick.AddListener(delegate { EditTextureClick(skinItem); });
                skinItem.transform.Find("Panel").Find("InputField_Height").GetComponent <InputField>().text    = config.barrierConfig[i].height.ToString();
                skinItem.transform.Find("Panel").Find("InputField_Thickness").GetComponent <InputField>().text = config.barrierConfig[i].width.ToString();
            }
        }
Ejemplo n.º 9
0
 public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
 WebHost.CreateDefaultBuilder(args).UseUrls("http://0.0.0.0:" + InitialConfigurations.GetPort())
 .UseStartup <Startup>();
Ejemplo n.º 10
0
 public static void Main(string[] args)
 {
     InitialConfigurations.SetPort();
     CreateWebHostBuilder(args).Build().Run();
 }
        // This method gets called by the runtime. Use this method to add services to the container.
        public void ConfigureServices(IServiceCollection services)
        {
            services.ConfigureApplicationCookie(ops =>
            {
                InitialConfigurations.SetTimeSesion(10);
                // Cookie settings
                ops.Cookie.HttpOnly = false;
                ops.ExpireTimeSpan  = TimeSpan.FromMinutes(InitialConfigurations.GetTimeSesion());

                // If the LoginPath isn't set, ASP.NET Core defaults
                // the path to /Account/Login.
                ops.LoginPath = $"/{CultureInfo.CurrentCulture.Name}/Identity/Account/Login";

                // If the AccessDeniedPath isn't set, ASP.NET Core defaults
                // the path to /Account/AccessDenied.
                ops.AccessDeniedPath = $"/{CultureInfo.CurrentCulture.Name}/Identity/Account/Logout";

                ops.SlidingExpiration = true;
            });

            services.Configure <CookiePolicyOptions>(options =>
            {
                // This lambda determines whether user consent for non-essential cookies is needed for a given request.
                options.CheckConsentNeeded    = context => true;
                options.MinimumSameSitePolicy = SameSiteMode.None;
            });

            services.AddSingleton <CultureLocalizer>();
            services.ConfigureRequestLocalization();

            services.AddSession();
            services.AddMemoryCache();
            //Configuracion de las politicas y los roles
            services.AddAuthorization(config => {
                #region Profile
                config.AddPolicy("PolicyProfile", policy => policy.RequireRole("OFFICER", "SEGMENTATION", "EXECUTIVE", "TREASURER", "GUEST", "PAYER", "OPERATIONSTREASURER", "ACCOUNTANT", "ADMINISTRATOR", "LEGAL", "MANAGER"));
                config.AddPolicy("PolicyProfileChange", policy => policy.RequireRole("ADMINISTRATOR", "LEGAL", "MANAGER"));
                config.AddPolicy("PolicyContracts", policy => policy.RequireRole("LEGAL"));
                config.AddPolicy("PolicySecurity", policy => policy.RequireRole("ADMINISTRATOR", "LEGAL", "MANAGER"));
                #endregion

                #region Debtor
                config.AddPolicy("RequiredDebtor", policy => policy.RequireRole("DEBTOR"));
                config.AddPolicy("PolicyLoadInvoiceDebtor", policy => policy.RequireRole("MANAGER", "PAYER"));
                config.AddPolicy("PolicyEditInvoiceDebtor", policy => policy.RequireRole("MANAGER", "PAYER"));
                config.AddPolicy("PolicyPostedDebtor", policy => policy.RequireRole("MANAGER", "TREASURER"));
                config.AddPolicy("PolicyFinancingDebtor", policy => policy.RequireRole("MANAGER", "TREASURER"));
                config.AddPolicy("PolicyConfirmingDebtor", policy => policy.RequireRole("MANAGER", "TREASURER"));
                #endregion

                #region Supplier
                config.AddPolicy("RequiredSupplier", policy => policy.RequireRole("SUPPLIER"));
                #region Publication Page
                config.AddPolicy("PolicyPagePublishedSupplier", policy => policy.RequireRole("MANAGER", "TREASURER", "PAYER"));
                config.AddPolicy("PolicyAcceptOfferBankSupplier", policy => policy.RequireRole("MANAGER", "TREASURER"));
                config.AddPolicy("PolicyPublishedInvoiceSupplier", policy => policy.RequireRole("MANAGER", "TREASURER", "PAYER"));
                #endregion
                config.AddPolicy("PolicyOverdueInvoiceSupplier", policy => policy.RequireRole("MANAGER", "TREASURER", "PAYER"));
                config.AddPolicy("PolicyLoadInvoiceSupplier", policy => policy.RequireRole("MANAGER", "PAYER"));
                config.AddPolicy("PolicyEditInvoiceSupplier", policy => policy.RequireRole("MANAGER", "PAYER"));
                config.AddPolicy("PolicyPostedSupplier", policy => policy.RequireRole("MANAGER", "TREASURER"));
                config.AddPolicy("PolicyAuctionSupplier", policy => policy.RequireRole("LEGAL", "MANAGER", "TREASURER", "PAYER", "GUEST"));
                config.AddPolicy("PolicyCloseAuctionSupplier", policy => policy.RequireRole("MANAGER", "TREASURER"));
                #endregion

                #region Confirmant
                config.AddPolicy("RequiredConfirmant", policy => policy.RequireRole("CONFIRMANT"));
                config.AddPolicy("PolicyRegisterDebtorConfirmant", policy => policy.RequireRole("ADMINISTRATOR", "LEGAL", "MANAGER", "EXECUTIVE"));
                config.AddPolicy("PolicyVerifyConfirmant", policy => policy.RequireRole("MANAGER", "OFFICER"));
                config.AddPolicy("PolicyReviewInvoice", policy => policy.RequireRole("MANAGER", "TREASURER"));
                config.AddPolicy("PolicyAssignExecutiveConfirmant", policy => policy.RequireRole("MANAGER", "SEGMENTATION"));
                config.AddPolicy("PolicyAssignRiskConfirmant", policy => policy.RequireRole("MANAGER", "EXECUTIVE"));
                config.AddPolicy("PolicyConfirmInvoiceConfirmant", policy => policy.RequireRole("MANAGER", "EXECUTIVE"));
                config.AddPolicy("PolicyBuyInvoiceConfirmant", policy => policy.RequireRole("MANAGER", "TREASURER"));
                config.AddPolicy("PolicyPaidInvoiceConfirmant", policy => policy.RequireRole("MANAGER", "OPERATIONSTREASURER"));
                config.AddPolicy("PolicyPaidConciliedConfirmant", policy => policy.RequireRole("MANAGER", "OPERATIONSTREASURER"));
                config.AddPolicy("PolicyPaidInvoiceOverdueConfirmant", policy => policy.RequireRole("MANAGER", "OPERATIONSTREASURER"));
                #endregion

                #region Factor
                config.AddPolicy("RequiredFactor", policy => policy.RequireRole("FACTOR"));
                config.AddPolicy("PolicyAuctionFactor", policy => policy.RequireRole("TREASURER", "DPERSON"));
                config.AddPolicy("PolicyPaidFactor", policy => policy.RequireRole("TREASURER", "DPERSON"));
                #endregion

                #region Backoffice
                config.AddPolicy("RequiredBackoffice", policy => policy.RequireRole("BACKOFFICE"));
                #endregion
            });

            services.AddMvc()
            .SetCompatibilityVersion(CompatibilityVersion.Version_2_2)
            .AddViewLocalization(o => o.ResourcesPath = "Resources")
            .AddModelBindingMessagesLocalizer(services)

            // Option A: use this for localization with shared resource
            .AddDataAnnotationsLocalization(o => {
                var type         = typeof(ViewResource);
                var assemblyName = new AssemblyName(type.GetTypeInfo().Assembly.FullName);
                var factory      = services.BuildServiceProvider().GetService <IStringLocalizerFactory>();
                var localizer    = factory.Create("ViewResource", assemblyName.Name);
                o.DataAnnotationLocalizerProvider = (t, f) => localizer;
            })

            // Option B: use this for localization by view specific resource
            //.AddDataAnnotationsLocalization()
            .AddRazorPagesOptions(o => {
                o.Conventions.Add(new CultureTemplateRouteModelConvention());
                o.AllowAreas = true;

                #region Profile
                o.Conventions.AuthorizeAreaFolder("Profile", "/");
                o.Conventions.AuthorizeAreaPage("Profile", "/ActualizarEmpresa", "PolicyProfile");
                o.Conventions.AuthorizeAreaPage("Profile", "/MantenimientoUsuarios", "PolicySecurity");
                #endregion

                #region Debtor
                o.Conventions.AuthorizeAreaFolder("Debtor", "/", "RequiredDebtor");
                o.Conventions.AuthorizeAreaPage("Debtor", "/CargaMasiva", "PolicyLoadInvoiceDebtor");
                o.Conventions.AuthorizeAreaPage("Debtor", "/CargaManual", "PolicyEditInvoiceDebtor");
                o.Conventions.AuthorizeAreaPage("Debtor", "/PostularFacturas", "PolicyPostedDebtor");
                o.Conventions.AuthorizeAreaPage("Debtor", "/FinanciamientoFacturas", "PolicyFinancingDebtor");
                o.Conventions.AuthorizeAreaPage("Debtor", "/ConfirmarFacturas", "PolicyConfirmingDebtor");
                #endregion

                #region Confirmant
                o.Conventions.AuthorizeAreaFolder("Confirmant", "/", "RequiredConfirmant");
                o.Conventions.AuthorizeAreaPage("Confirmant", "/Account/Register", "PolicyRegisterDebtorConfirmant");
                o.Conventions.AuthorizeAreaPage("Confirmant", "/VerificarDatos", "PolicyVerifyConfirmant");
                o.Conventions.AuthorizeAreaPage("Confirmant", "/Segmentacion", "PolicyAssignExecutiveConfirmant");
                o.Conventions.AuthorizeAreaPage("Confirmant", "/EjecutivoCuentas", "PolicyAssignRiskConfirmant");
                o.Conventions.AuthorizeAreaPage("Confirmant", "/ConfirmarFacturas", "PolicyConfirmInvoiceConfirmant");
                o.Conventions.AuthorizeAreaPage("Confirmant", "/CompraFactura", "PolicyBuyInvoiceConfirmant");
                o.Conventions.AuthorizeAreaPage("Confirmant", "/PagoFacturas", "PolicyPaidInvoiceConfirmant");
                o.Conventions.AuthorizeAreaPage("Confirmant", "/FacturasConciliadas", "PolicyPaidConciliedConfirmant");
                o.Conventions.AuthorizeAreaPage("Confirmant", "/FacturasVencidas", "PolicyPaidInvoiceOverdueConfirmant");
                #endregion

                #region Supplier
                o.Conventions.AuthorizeAreaFolder("Supplier", "/", "RequiredSupplier");
                o.Conventions.AuthorizeAreaPage("Supplier", "/PublicarFacturas", "PolicyPagePublishedSupplier");
                o.Conventions.AuthorizeAreaPage("Supplier", "/FacturasVencimiento", "PolicyOverdueInvoiceSupplier");
                o.Conventions.AuthorizeAreaPage("Supplier", "/MercadoFacturas", "PolicyAuctionSupplier");
                o.Conventions.AuthorizeAreaPage("Supplier", "/CierreMercado", "PolicyCloseAuctionSupplier");
                #endregion

                #region Factor
                o.Conventions.AuthorizeAreaFolder("Factor", "/", "RequiredFactor");
                o.Conventions.AuthorizeAreaPage("Factor", "/MercadoFacturas", "PolicyAuctionFactor");
                o.Conventions.AuthorizeAreaPage("Factor", "/PagoFacturas", "PolicyPaidFactor");
                #endregion

                o.Conventions.AuthorizeAreaFolder("Backoffice", "/", "RequiredBackoffice");
            });

            // Add identity types
            services.AddIdentity <User, Role>(
                config => {
                //config.SignIn.RequireConfirmedEmail = true;
                //config.User.RequireUniqueEmail = true;
                // Password requirements
                config.Password.RequiredLength         = 8;
                config.Password.RequireDigit           = true;
                config.Password.RequireUppercase       = true;
                config.Password.RequireLowercase       = true;
                config.Password.RequireNonAlphanumeric = true;
            }).AddDefaultUI(UIFramework.Bootstrap4)
            .AddDefaultTokenProviders()
            .AddClaimsPrincipalFactory <CustomClaimsStore>();

            // Identity Services
            services.AddTransient <IUserStore <User>, CustomUserStore>();
            services.AddTransient <IRoleStore <Role>, CustomRoleStore>();

            services.AddDbContext <ApplicationDbContext>(options =>
                                                         options.UseNpgsql(Configuration.GetConnectionString("DefaultConnection")));

            // Add application services.
            services.AddTransient <IEmailSender, AuthMessageSender>();
            services.AddTransient <ISmsSender, AuthMessageSender>();
            services.AddSingleton <IAuthService, AuthService>();
            services.AddSingleton <IAuctionService, AuctionService>();
            services.AddSingleton <IGlobalService, GlobalService>();
            services.AddSingleton <IPeopleService, PeopleService>();
            services.AddSingleton <IInvoiceService, InvoiceService>();
            services.AddSingleton <IPaymentService, PaymentService>();

            // Services
            services.AddSingleton(t => new GraphQLClient(Configuration["GraphQlEndpoint"]));
            services.AddSingleton <GlobalConsumer>();
            services.AddSingleton <AuthConsumer>();
            services.AddSingleton <PeopleConsumer>();
            services.AddSingleton <InvoiceConsumer>();
            services.AddSingleton <AuctionConsumer>();
            services.AddSingleton <PaymentConsumer>();

            services.AddSignalR();
            services.AddProgressiveWebApp();

            services.AddSession(options => {
                options.IdleTimeout = TimeSpan.FromMinutes(5);
            });
        }
        private void configLoadHelper(InitialConfigurations config)
        {
            var children        = new List <GameObject>();
            var parentTransform = buildingMenu.transform.Find("Panel").Find("ScrollRect").Find("Content Panel");

            foreach (Transform child in parentTransform)
            {
                children.Add(child.gameObject);
            }
            children.ForEach(child => Destroy(child));

            materialList = config.buildingConfig.defaultSkins;

            InputField min = buildingMenu.transform.Find("Panel").Find("HeightComponent").Find("InputField_Min").GetComponent <InputField>();

            min.text = config.buildingConfig.minheight.ToString();

            InputField max = buildingMenu.transform.Find("Panel").Find("HeightComponent").Find("InputField_Max").GetComponent <InputField>();

            max.text = config.buildingConfig.maxheight.ToString();

            GameObject skinList = buildingMenu.transform.Find("Panel").Find("ScrollRect").Find("Content Panel").gameObject;

            for (int k = 0; k < config.buildingConfig.defaultSkins.Count; k++)
            {
                GameObject skinItem = (GameObject)MonoBehaviour.Instantiate(Resources.Load("Prefabs/Menu/BuildingSkin"));

                Toggle skinitemToggle = skinItem.transform.Find("Panel").Find("Toggle").gameObject.GetComponent <Toggle>();
                skinitemToggle.isOn = config.buildingConfig.defaultSkins[k].isActive;

                Text skinitemName = skinItem.transform.Find("Panel").Find("Text_Type").gameObject.GetComponent <Text>();
                skinitemName.text = config.buildingConfig.defaultSkins[k].name;

                Text skinitemSize = skinItem.transform.Find("Panel").Find("Text_Size").GetComponent <Text>();
                skinitemSize.text = config.buildingConfig.defaultSkins[k].width.ToString();

                byte[] fileData;

                RawImage  skinitemColor = skinItem.transform.Find("Panel").Find("Image_ColorTexture").GetComponent <RawImage>();
                Texture2D colorText;
                if (File.Exists(config.buildingConfig.defaultSkins[k].colorTexturePath))
                {
                    fileData  = File.ReadAllBytes(config.buildingConfig.defaultSkins[k].colorTexturePath);
                    colorText = new Texture2D(2, 2);
                    colorText.LoadImage(fileData);
                    skinitemColor.texture = colorText;
                }
                else
                {
                    skinitemColor.texture = null;
                }

                RawImage  skinitemNormal = skinItem.transform.Find("Panel").Find("Image_NormalTexture").GetComponent <RawImage>();
                Texture2D normalText;
                if (File.Exists(config.buildingConfig.defaultSkins[k].normalTexturePath))
                {
                    fileData   = File.ReadAllBytes(config.buildingConfig.defaultSkins[k].normalTexturePath);
                    normalText = new Texture2D(2, 2);
                    normalText.LoadImage(fileData);
                    skinitemNormal.texture = normalText;
                }
                else
                {
                    skinitemNormal.texture = null;
                }

                RawImage  skinitemSpecular = skinItem.transform.Find("Panel").Find("Image_SpecularTexture").GetComponent <RawImage>();
                Texture2D specularText;
                if (File.Exists(config.buildingConfig.defaultSkins[k].specularTexturePath))
                {
                    fileData     = File.ReadAllBytes(config.buildingConfig.defaultSkins[k].specularTexturePath);
                    specularText = new Texture2D(2, 2);
                    specularText.LoadImage(fileData);
                    skinitemSpecular.texture = specularText;
                }
                else
                {
                    skinitemSpecular.texture = null;
                }


                skinItem.transform.SetParent(skinList.transform);
            }
        }
Ejemplo n.º 13
0
        /// <summary>
        ///  Constructs the scene from given parameters
        /// </summary>
        /// <param name="OSMfilename">Full path of OSM file</param>
        /// <param name="continent">Specify Continent to download correct Heightmap from Nasa Srtm Data</param>
        /// <param name="provider">Choose mapProvider to select Texture of Terrain</param>
        public void initializeScene(string OSMfilename, HeightmapContinent _continent, MapProvider _provider)
        {
            string[] subStr = OSMfilename.Split(new char[] { '/', '\\' });
            sceneName = subStr[subStr.Length - 1];
            OSMPath   = OSMfilename;

            continent = _continent;
            provider  = _provider;

            List <Way> WayListforHighway  = new List <Way>();
            List <Way> WayListforBuilding = new List <Way>();

            InitialConfigLoader configloader = new InitialConfigLoader();

            var stopwatch = new System.Diagnostics.Stopwatch();

            stopwatch.Start();

            OSMparser parser = new OSMparser();

            scenebbox = parser.readBBox(OSMfilename);
            scenebbox = editbbox(scenebbox);
            config    = configloader.loadInitialConfig();


            HeightmapLoader heightMap = new HeightmapLoader(scenebbox, continent);

            terrain = new myTerrain(heightMap, scenebbox, OSMfilename, provider);

            stopwatch.Stop();
            Debug.Log("<color=blue>TERRAIN RENDER TIME:</color>" + stopwatch.ElapsedMilliseconds);
            stopwatch.Reset();
            stopwatch.Start();

            osmxml = parser.parseOSM(OSMfilename);
            assignNodePositions();

            stopwatch.Stop();
            Debug.Log("<color=blue>OSM PARSING TIME:</color>" + stopwatch.ElapsedMilliseconds);
            stopwatch.Reset();
            stopwatch.Start();


            defaultObject3DList = DefaultObject3DHandler.drawDefaultObjects(osmxml.defaultobject3DList);

            stopwatch.Stop();
            Debug.Log("<color=blue>3D OBJECT RENDER TIME:</color>" + stopwatch.ElapsedMilliseconds);
            stopwatch.Reset();
            stopwatch.Start();


            for (int k = 0; k < osmxml.wayList.Count; k++)
            {
                Way w = osmxml.wayList[k];

                switch (w.type)
                {
                case ItemEnumerator.wayType.building:
                    WayListforBuilding.Add(w);
                    break;

                case ItemEnumerator.wayType.highway:
                    WayListforHighway.Add(w);
                    break;

                case ItemEnumerator.wayType.area:
                    break;

                case ItemEnumerator.wayType.barrier:
                    barrierList.Add(new Barrier(w, config.barrierConfig));
                    break;

                case ItemEnumerator.wayType.river:
                    highwayList.Add(new Highway(w, config.highwayConfig, terrain));
                    break;

                case ItemEnumerator.wayType.none:
                    break;
                }
            }

            stopwatch.Stop();
            Debug.Log("<color=blue>ITEM ENUMERATING TIME:</color>" + stopwatch.ElapsedMilliseconds);
            stopwatch.Reset();
            stopwatch.Start();

            highwayModeller = new HighwayModeller(WayListforHighway, terrain, config.highwayConfig);
            highwayModeller.renderHighwayList();
            highwayModeller.renderPavementList();
            highwayList  = highwayModeller.highwayList;
            pavementList = highwayModeller.pavementList;

            stopwatch.Stop();
            Debug.Log("<color=blue>HIGHWAY RENDERING TIME:</color>" + stopwatch.ElapsedMilliseconds);
            stopwatch.Reset();
            stopwatch.Start();

            BuildingListModeller buildingListModeller = new BuildingListModeller(WayListforBuilding, osmxml.buildingRelations, config.buildingConfig);

            buildingListModeller.renderBuildingList();
            buildingList = buildingListModeller.buildingList;

            stopwatch.Stop();
            Debug.Log("<color=blue>BUILDING RENDERING TIME:</color>" + stopwatch.ElapsedMilliseconds);

            Debug.Log("<color=red>Scene Info:</color> BuildingCount:" + buildingList.Count.ToString() + " HighwayCount:" + highwayList.Count);
        }
Ejemplo n.º 14
0
        /// <summary>
        /// Load urban scene using a save file
        /// </summary>
        /// <param name="save"> Save file object </param>
        public void loadProject(SceneSave save)
        {
            List <Way> WayListforHighway  = new List <Way>();
            List <Way> WayListforBuilding = new List <Way>();

            InitialConfigLoader configloader = new InitialConfigLoader();

            OSMPath = save.osmPath;
            OSMparser parser = new OSMparser();

            scenebbox = parser.readBBox(save.osmPath);
            scenebbox = editbbox(scenebbox);
            config    = configloader.loadInitialConfig(); //--> Maybe it is better to include config to SaveProject file

            HeightmapLoader heightMap = new HeightmapLoader(scenebbox, save.continent);

            terrain = new myTerrain(heightMap, scenebbox, save.osmPath, save.provider);
            osmxml  = parser.parseOSM(save.osmPath);
            assignNodePositions();

            defaultObject3DList = DefaultObject3DHandler.drawDefaultObjects(osmxml.defaultobject3DList);

            LoadExternalOBJ objloader = new LoadExternalOBJ();

            //3D OBJECT LOAD
            for (int i = 0; i < save.objectSaveList.Count; i++)
            {
                Object3D obj = new Object3D();
                obj.name = save.objectSaveList[i].name;

                if (save.objectSaveList[i].type == ObjectType.External)
                {
                    obj.object3D = objloader.loadOBJ(save.objectSaveList[i].resourcePath);
                }
                else
                {
                    obj.object3D = (GameObject)MonoBehaviour.Instantiate(Resources.Load(save.objectSaveList[i].resourcePath));
                }
                obj.object3D.AddComponent <Object3dMouseHandler>();
                obj.resourcePath = save.objectSaveList[i].resourcePath;
                obj.object3D.transform.position   = save.objectSaveList[i].translate;
                obj.object3D.transform.localScale = save.objectSaveList[i].scale;
                Quaternion quat = new Quaternion();
                quat.eulerAngles = save.objectSaveList[i].rotate;
                obj.object3D.transform.rotation = quat;
                obj.object3D.name = obj.name;
                obj.object3D.tag  = "3DObject";
                object3DList.Add(obj);
            }

            for (int k = 0; k < osmxml.wayList.Count; k++)
            {
                Way w = osmxml.wayList[k];

                switch (w.type)
                {
                case ItemEnumerator.wayType.building:
                    WayListforBuilding.Add(w);
                    break;

                case ItemEnumerator.wayType.highway:
                    WayListforHighway.Add(w);
                    break;

                case ItemEnumerator.wayType.area:
                    break;

                case ItemEnumerator.wayType.barrier:
                    barrierList.Add(new Barrier(w, config.barrierConfig));
                    break;

                case ItemEnumerator.wayType.river:
                    highwayList.Add(new Highway(w, config.highwayConfig, terrain));
                    break;

                case ItemEnumerator.wayType.none:
                    break;
                }
            }

            highwayModeller = new HighwayModeller(WayListforHighway, terrain, config.highwayConfig, save.highwaySaveList);
            highwayModeller.renderHighwayList();
            highwayModeller.renderPavementList();
            highwayList  = highwayModeller.highwayList;
            pavementList = highwayModeller.pavementList;

            BuildingListModeller buildingListModeller = new BuildingListModeller(WayListforBuilding, osmxml.buildingRelations, config.buildingConfig, save.buildingSaveList);

            buildingListModeller.renderBuildingList();
            buildingList = buildingListModeller.buildingList;

            if (save.controller == null)
            {
                return;
            }

            if (save.controller.controllerType == ControllerSave.ControllerType.CameraVan)
            {
                Transform        mainCamera    = GameObject.Find("Main Camera").transform;
                CameraController camController = mainCamera.GetComponent <CameraController>();

                controller = (GameObject)GameObject.Instantiate(Resources.Load("Prefabs/Car/PolimiCameraCar/CameraVan"));
                controller.AddComponent <CameraVanMouseHandler>();
                controller.tag  = "CameraVan";
                controller.name = "Camera Van";
                controller.transform.position = mainCamera.position + mainCamera.forward * 10.0f;
                controller.GetComponent <Rigidbody>().useGravity = false;
                camController.target = controller.transform;
            }

            else
            {
                Transform        mainCamera    = GameObject.Find("Main Camera").transform;
                CameraController camController = mainCamera.GetComponent <CameraController>();

                controller = (GameObject)GameObject.Instantiate(Resources.Load("Prefabs/Ethan/ThirdPersonController"));
                controller.AddComponent <CameraVanMouseHandler>();
                controller.tag  = "CameraVan";
                controller.name = "Third Person (Ethan)";
                controller.transform.position = mainCamera.position + mainCamera.forward * 10.0f;
                camController.target          = controller.transform;
            }

            controller.transform.position = save.controller.controllerPosition;
            Quaternion controllerQuat = new Quaternion();

            controllerQuat.eulerAngles    = save.controller.controllerRotation;
            controller.transform.rotation = controllerQuat;

            CameraVanEdit cve = GameObject.Find("Canvas").transform.Find("CameraVanEdit").GetComponent <CameraVanEdit>();

            cve.cameraList   = save.controller.convertBackToCamList(save.controller.cameraSettings);
            cve.laserScanner = save.controller.convertBackToLaser(save.controller.laserSetting);
        }