// Use this for initialization
    void Start()
    {
        mItemQuarterlySummaryRenderGroup = new RenderableGroup <BusinessState.PerItemReport>(
            SummaryView.transform.Find("ItemSummaries"),
            RenderFunctions.RenderItemQuarterlySummary);

        mInventoryResourceRenderGroup = new RenderableGroup <FeatherAndCount>(
            InventoryView.transform.Find("InvGroups/InventoryFeathers"),
            RenderFunctions.RenderFeatherAndCount);
        mInventoryProductRenderGroup = new RenderableGroup <PotionAndCount>(
            InventoryView.transform.Find("InvGroups/InventoryPotions"),
            RenderFunctions.RenderPotionAndCount);

        mPeacockFeatherRenderGroup = new RenderableGroup <FeatherAndCount>(
            PeacockView.transform.Find("InventoryFeathers"),
            RenderFunctions.RenderFeatherAndCount);
        // Overlays
        mOverlayFeatherCollectionFeatherRenderGroup = new RenderableGroup <FeatherAndCount>(
            OverlayViewFeathers.transform.Find("Content/InventoryFeathers"),
            RenderFunctions.RenderFeatherAndCount);
        mOverlayPotionSalesRenderGroup = new RenderableGroup <BusinessState.PerItemReport>(
            OverlayViewPotions.transform.Find("PotionSaleRows"),
            RenderFunctions.RenderPotionSale);
        mOverlayFinancialRenderGroup = new RenderableGroup <string[]>(
            OverlayViewFinancial.transform.Find("Content"),
            RenderFunctions.RenderStringArrayToTextChildren);

        SetupButtonCallbacks();
        // don't start with all customers visible
        RandomizeInitialCustomers();
    }
예제 #2
0
 public void Start()
 {
     mSaleRowGroup = new RenderableGroup <InventoryEntry>(gemSaleRowContainer, InventoryEntry.RenderToGemSaleList);
 }
예제 #3
0
 // Start is called before the first frame update
 void Start()
 {
     mEmailGroup = new RenderableGroup <Email>(emailContainer, Email.RenderToListOfEmails);
     RefreshEmails();
 }
예제 #4
0
파일: ShopView.cs 프로젝트: AlmostMatt/LD48
 public void Start()
 {
     mShopItemsGroup = new RenderableGroup <ShopItem>(shopItemsContainer, ShopItem.RenderToListOfShopItems);
     InitializeShopItems();
 }
예제 #5
0
        /// <summary>
        /// Отрисовка всех объектов для каждой камеры
        /// </summary>
        public void Render()
        {
            // Очистка сцены
            GL.ClearColor(BackColor);
            GL.Clear(ClearBufferMask.ColorBufferBit | ClearBufferMask.DepthBufferBit);

            // Параметры
            GL.Hint(HintTarget.PerspectiveCorrectionHint, HintMode.Nicest);
            GL.Enable(EnableCap.Texture2D);
            GL.Enable(EnableCap.CullFace);
            GL.CullFace(CullFaceMode.Back);

            // Отрисовка камеры
            if (Camera != null)
            {
                Camera.Setup();
                if (Sky != null)
                {
                    Camera.LoadSkyMatrix();
                    Sky.Render();
                }
                Camera.LoadMatrix();
                GL.Enable(EnableCap.DepthTest);
                GL.DepthFunc(DepthFunction.Lequal);
            }

            // Расположение камеры
            Vec3 cameraPos = Camera.Position;

            // Сборка объектов
            bool needAlphaPass = false, needBlendPass = false;
            List <RenderableGroup>       opaqueGroups = new List <RenderableGroup>();
            List <RenderableGroup>       alphaTestGroups = new List <RenderableGroup>();
            List <RangedRenderableGroup> alphaBlendGroups = new List <RangedRenderableGroup>();

            foreach (Entity e in Entities)
            {
                if (e.Visible)
                {
                    Matrix4               entityMatrix = e.RenditionMatrix;
                    RenderableGroup       opaque       = new RenderableGroup();
                    RenderableGroup       alphaTest    = new RenderableGroup();
                    RangedRenderableGroup alphaBlend   = new RangedRenderableGroup();

                    IEnumerable <EntityComponent> components = e.GetVisualComponents();
                    foreach (EntityComponent c in components)
                    {
                        switch (c.RenditionPass)
                        {
                        case EntityComponent.TransparencyPass.AlphaTest:
                            alphaTest.Components.Add(c);
                            break;

                        case EntityComponent.TransparencyPass.Blend:
                            alphaBlend.Components.Add(c);
                            break;

                        default:
                            opaque.Components.Add(c);
                            break;
                        }
                    }

                    if (opaque.Components.Count > 0)
                    {
                        opaque.Matrix = entityMatrix;
                        opaqueGroups.Add(opaque);
                    }
                    if (alphaTest.Components.Count > 0)
                    {
                        alphaTest.Matrix = entityMatrix;
                        alphaTestGroups.Add(alphaTest);
                        needAlphaPass = true;
                    }
                    if (alphaBlend.Components.Count > 0)
                    {
                        alphaBlend.Matrix   = entityMatrix;
                        alphaBlend.Distance = (e.Position - cameraPos).LengthSquared;
                        alphaBlendGroups.Add(alphaBlend);
                        needBlendPass = true;
                    }
                }
            }


            // Непрозрачный проход
            foreach (RenderableGroup g in opaqueGroups)
            {
                g.Render();
            }

            // Альфа-проходы
            if (needAlphaPass || needBlendPass)
            {
                // Включение смешивания
                GL.Enable(EnableCap.Blend);
                GL.BlendFunc(BlendingFactorSrc.SrcAlpha, BlendingFactorDest.OneMinusSrcAlpha);

                // Альфатест-проход
                if (needAlphaPass)
                {
                    // Включение альфатеста
                    if (GraphicalCaps.ShaderPipeline)
                    {
                        ShaderSystem.IsAlphaTest = true;
                    }
                    else
                    {
                        GL.Enable(EnableCap.AlphaTest);
                        GL.AlphaFunc(AlphaFunction.Gequal, 0.9f);
                    }

                    // Отрисовка поверхностей
                    foreach (RenderableGroup g in alphaTestGroups)
                    {
                        g.Render();
                    }

                    // Отключение альфатеста
                    if (GraphicalCaps.ShaderPipeline)
                    {
                        ShaderSystem.IsAlphaTest = false;
                    }
                    else
                    {
                        GL.Disable(EnableCap.AlphaTest);
                    }
                }

                // Отключение смешивания
                if (needBlendPass)
                {
                    // Сначала - сортировка всех объектов от дальних к ближним
                    alphaBlendGroups.Sort((a, b) => {
                        return(b.Distance.CompareTo(a.Distance));
                    });

                    // Отключение записи в буфер глубины
                    GL.DepthMask(false);

                    // Отрисовка всех поверхностей
                    foreach (RangedRenderableGroup rg in alphaBlendGroups)
                    {
                        rg.Render();
                    }

                    // Включение буффера глубины
                    GL.DepthMask(true);
                }

                // Отключение смешивания
                GL.Disable(EnableCap.Blend);
            }

            // Отключение состояний
            GL.Disable(EnableCap.DepthTest);
        }
예제 #6
0
 public void Start()
 {
     mSearchResultGroup = new RenderableGroup <SearchResult>(searchResultContainer, SearchResult.RenderToListOfResults);
     PerformSearch("");
 }
예제 #7
0
 // Start is called before the first frame update
 void Start()
 {
     mDocumentGroup = new RenderableGroup <Document>(docContainer, Document.RenderToListOfDocs);
     RefreshDocs();
 }