Beispiel #1
0
        protected virtual void CreateBuffers()
        {
            BufferDescription bufferDescription = new BufferDescription()
            {
                Usage               = ResourceUsage.Default,
                BindFlags           = BindFlags.ConstantBuffer,
                CpuAccessFlags      = CpuAccessFlags.None,
                OptionFlags         = ResourceOptionFlags.None,
                StructureByteStride = 0,
            };

            bufferDescription.SizeInBytes  = Utilities.SizeOf <CommonStructs.ConstBufferPerObjectStruct>();
            ToDispose(PerObjConstantBuffer = new Buffer(GetDevice, bufferDescription));

            bufferDescription.SizeInBytes    = Utilities.SizeOf <CommonStructs.ConstBufferPerFrameStruct>();
            ToDispose(PerFrameConstantBuffer = new Buffer(GetDevice, bufferDescription));

            bufferDescription.SizeInBytes            = Utilities.SizeOf <CommonStructs.ConstBufferShadowDepthStruct>();
            ToDispose(PerObjectShadowPassConstBuffer = new Buffer(GetDevice, bufferDescription));

            m_ShadowLightsDataBuffer         = new CommonStructs.ConstBufferShadowMapLightStruct[3];
            bufferDescription.SizeInBytes    = Utilities.SizeOf <CommonStructs.ConstBufferDirLightStruct>() * 3;
            ToDispose(ShadowLightsDataBuffer = new Buffer(GetDevice, bufferDescription));

            AssetsLoader.GetShader <VertexShader>("ScreenQuadVS", out ShaderSignature vsSignature);
            ToDispose(QuadLayoyt = new InputLayout(GetDevice, vsSignature, new InputElement[] {
                new InputElement("SV_VertexID", 0, Format.R32G32B32_Float, 0, 0),
            }));
        }
 /// <summary>
 /// release unnecessary references once we have finished from this map
 /// </summary>
 public void ReleaseReferences()
 {
     _isLoaded = false;
     _callback = null;
     _map      = null;
     _loader   = null;
 }
 private void Awake()
 {
     if (instance == null)
     {
         instance = this;
     }
 }
        /// <summary>
        /// 更新资源补丁
        /// </summary>
        /// <param name="resUpdate"></param>
        private void StartLoadPatchRes(ref List <ResVersion> resUpdate)
        {
            if (mRemoteResLoader != default)
            {
                mRemoteResLoader.Dispose();
            }
            else
            {
            }

            int max = resUpdate.Count;

            if (max > 0)
            {
                mRemoteResLoader = new AssetsLoader();
                mRemoteResLoader.RemoteAssetUpdated.AddListener(OnResItemUpdated);

                ResVersion item;
                string     url, resName;
                for (int i = 0; i < max; i++)
                {
                    item    = resUpdate[i];
                    url     = item.Url;
                    resName = item.name;
                    mRemoteResLoader.AddRemote(url, resName, true);
                }
                mRemoteResLoader.Load(out _);
            }
            else
            {
                UpdateHandler?.Invoke(true, 1f);
            }
        }
Beispiel #5
0
        public ScorePage(
            AssetsLoader assets,
            ISettingsRepository settingsRepository,
            IScreenTransformationMatrixProvider matrixScaleProvider,
            ILocalizedStringsRepository localizedStringsRepository)
        {
            _font                = assets.Font;
            _background          = assets.OtherSprites["scoreBackground"];
            _matrixScaleProvider = matrixScaleProvider;

            _titleText          = localizedStringsRepository.Get(GameStringsLoader.ScorePageTitleString);
            _titleScalingObject = new ScalingObject(1f, 1.2f, 1.0f);
            _titleDrawingInfos  = new DrawingInfos()
            {
                Position = new Vector2(matrixScaleProvider.VirtualWidth / 2f, 100f),
                Origin   = _font.GetTextCenter(_titleText)
            };

            float textsScale = 0.4f;

            var bestFarts           = settingsRepository.GetOrSetInt(GameScores.BestFartsScoreKey, default);
            var bestNumberOfMeters  = settingsRepository.GetOrSetInt(GameScores.BestNumberOfMetersScoreKey, default);
            var bestVegetablesEaten = settingsRepository.GetOrSetInt(GameScores.BestVegetablesEatenScoreKey, default);

            _scoreInfos = new List <ScoreRecordText>()
            {
                new ScoreRecordText(
                    $"{localizedStringsRepository.Get(GameStringsLoader.BestNumberOfMetersScoreKey)}{bestNumberOfMeters}",
                    new DrawingInfos()
                {
                    Position     = new Vector2(_titleDrawingInfos.Position.X / 2, _titleDrawingInfos.Position.Y + 100f),
                    OverlayColor = Color.White.WithAlpha(0),
                    Scale        = textsScale
                }),

                new ScoreRecordText(
                    $"{localizedStringsRepository.Get(GameStringsLoader.BestVegetablesEatenScoreKey)}{bestVegetablesEaten}",
                    new DrawingInfos()
                {
                    Position     = new Vector2(_titleDrawingInfos.Position.X / 2, _titleDrawingInfos.Position.Y + 140f),
                    OverlayColor = Color.White.WithAlpha(0),
                    Scale        = textsScale
                }),

                new ScoreRecordText(
                    $"{localizedStringsRepository.Get(GameStringsLoader.BestFartsScoreKey)}{bestFarts}",
                    new DrawingInfos()
                {
                    Position     = new Vector2(_titleDrawingInfos.Position.X / 2, _titleDrawingInfos.Position.Y + 180f),
                    OverlayColor = Color.White.WithAlpha(0),
                    Scale        = textsScale
                }),
            };

            _nTexts        = _scoreInfos.Count;
            _currentTextId = 0;
            _fadeObject    = new FadeObject(TimeSpan.FromMilliseconds(500), Color.White);
            _fadeObject.FadeInCompleted += _textFadeObject_FadeInCompleted;
            _fadeObject.FadeIn();
        }
Beispiel #6
0
        public StatusBar(
            Vector2 position,
            AssetsLoader assetsLoader,
            SoundManager soundManagerReference)
        {
            _textureReference = assetsLoader.Textures;

            _soundManagerReference = soundManagerReference;

            _statusBurgers = new StatusBarSprite[4];
            Vector2 tmpPos   = new Vector2(position.X, position.Y + 20);
            int     hamWidth = assetsLoader.TexturesRectangles["Burger"].Width;
            Vector2 hamScale = new Vector2(0.9f);

            _sfondoMorteSourceRect = assetsLoader.TexturesRectangles["death_screen"];

            for (int i = 0; i < 4; ++i)
            {
                _statusBurgers[i] = new StatusBarSprite(
                    assetsLoader.Textures,
                    assetsLoader.TexturesRectangles["Burger"],
                    tmpPos,
                    _emptyColor,
                    hamScale);
                tmpPos.X += hamWidth;
            }
        }
Beispiel #7
0
        private async void MI_LoadAllPAKs_Click(object sender, RoutedEventArgs e)
        {
            FWindow.FCurrentPAK = string.Empty;

            //LOAD ALL
            if (!MI_DifferenceMode.IsChecked && !MI_UpdateMode.IsChecked)
            {
                await PAKsLoader.LoadAllPAKs();
            }

            //LOAD DIFF
            if (MI_DifferenceMode.IsChecked && !MI_UpdateMode.IsChecked)
            {
                await PAKsLoader.LoadDifference();
            }

            //LOAD AND EXTRACT DIFF
            if (MI_DifferenceMode.IsChecked && MI_UpdateMode.IsChecked)
            {
                await PAKsLoader.LoadDifference(true);

                if (PAKsLoader.umIsOk)
                {
                    await AssetsLoader.ExtractUpdateMode();
                }
            }
        }
Beispiel #8
0
        public GameOrchestrator(
            Func <InfartGame> gameFactory,
            Func <MainMenuPage> menuFactory,
            Func <ScorePage> scoreFactory,
            GraphicsDevice graphicsDevice,
            AssetsLoader assets,
            ISettingsRepository settingsRepository,
            IScreenTransformationMatrixProvider matrixScaleProvider,
            IWebPageOpener webPageOpener,
            ILocalizedStringsRepository localizedStringsRepository)
        {
            _gameFactory  = gameFactory ?? throw new ArgumentNullException(nameof(gameFactory));
            _menuFactory  = menuFactory ?? throw new ArgumentNullException(nameof(menuFactory));
            _scoreFactory = scoreFactory ?? throw new ArgumentNullException(nameof(scoreFactory));

            _webPageOpener  = webPageOpener ?? throw new ArgumentNullException(nameof(webPageOpener));
            _graphicsDevice = graphicsDevice ?? throw new ArgumentNullException(nameof(graphicsDevice));

            _assets                     = assets ?? throw new ArgumentNullException(nameof(assets));
            _settingsRepository         = settingsRepository ?? throw new ArgumentNullException(nameof(settingsRepository));
            _localizedStringsRepository = localizedStringsRepository ?? throw new ArgumentNullException(nameof(localizedStringsRepository));

            _matrixScaleProvider = matrixScaleProvider ?? throw new ArgumentNullException(nameof(matrixScaleProvider));
            if (_matrixScaleProvider is DynamicScalingMatrixProvider)
            {
                (_matrixScaleProvider as DynamicScalingMatrixProvider).ScaleMatrixChanged += GameOrchestrator_ScaleMatrixChanged;
            }
            RegenerateRenderTarget();

            ShouldEndApplication = false;

            _stateTransition = new FadeObject(_fadeDuration, Color.White);
            _stateTransition.FadeOutCompleted += _stateTransition_FadeOutCompleted;
        }
        public override void Init(PreviewEngine engine)
        {
            base.Init(engine);
            PreviewEntity = EngineRef.ECSWorld.CreateEntityWith <Transform, Renderer>("TestTextureEntity");

            PreviewEntity.GetComponent <Transform>().SetTransformations(Vector3.Zero, Quaternion.Identity, new Vector3(1, 1, 0.1f));
            RendererComponent = PreviewEntity.GetComponent <Renderer>();

            EngineRef.ECSWorld.Refresh();

            TestMaterial = new Material(new EngineCore.ShaderGraph.MetaMaterial()
            {
                shadingMode = EngineCore.ShaderGraph.MetaMaterial.ShadingMode.Unlit,
            })
            {
                Name           = "M_TextureTest",
                AlbedoMapAsset = "",
                PropetyBlock   = new MaterialPropetyBlock()
                {
                    MetallicValue  = 0.5f,
                    RoughnessValue = 0.75f,
                    Tile           = Vector2.One,
                },
            };
            RendererComponent.SetMeshAndMaterial(AssetsLoader.LoadMeshInfo(AssetsLoader.PrimitivesMesh.Cube),
                                                 AssetsLoader.LoadMaterialInfo(TestMaterial));

            /*PreviewGO = EngineRef.AddGameObject("TestQuad");
             * PreviewGO.transform.Position = Vector3.Zero;
             * PreviewGO.transform.Rotation = Quaternion.Identity;
             * PreviewGO.transform.Scale = (Vector3.Right + Vector3.Up) * 3.85f + Vector3.ForwardLH * 0.1f;
             * PreviewGO.GetComponent<DeprecatedRenderer>().SpecificType = DeprecatedRenderer.SpecificTypeEnum.Unlit;
             * PreviewGO.GetComponent<DeprecatedRenderer>().SetMeshAndMaterial(Primitives.PlaneWithUV, TestMaterial);
             * PreviewGO.SelfActive = false;*/
        }
Beispiel #10
0
        public InfartExplosion(AssetsLoader assetsLoader)
        {
            _particelle = new List <ParticleExplosion>();

            AddNewScritta(assetsLoader.Textures, assetsLoader.TexturesRectangles["Bang"]);
            AddRandomParticles(assetsLoader.Textures, assetsLoader.TexturesRectangles["Burger"], assetsLoader.TexturesRectangles["Merda"]);
        }
Beispiel #11
0
        public Player(
            Vector2 startingPos,
            AssetsLoader assetsLoader,
            InfartGame gameManagerReference)
            : base(1.0f, startingPos, gameManagerReference.GroundObjects())
        {
            _fillColor          = _overlayColor;
            Position            = startingPos;
            HorizontalMoveSpeed = 300f;
            _origin             = Vector2.Zero;

            _gameManagerReference = gameManagerReference;

            _scoreggiaSystem = new ScoreggiaParticleSystem(10, assetsLoader.Textures, assetsLoader.TexturesRectangles["ScoreggiaParticle"]);
            _jalapenoSystem  = new JalapenoParticleSystem(10, assetsLoader);
            _broccoloSystem  = new BroccoloParticleSystem(8, assetsLoader);
            _beanSystem      = new BeanParticleSystem(10, assetsLoader);

            LoadAnimation("idle", assetsLoader.PlayerIdleRects,
                          true, 0.1f, assetsLoader.Textures);

            LoadAnimation("run", assetsLoader.PlayerRunRects,
                          true, 0.05f, assetsLoader.Textures);

            LoadAnimation("fall", assetsLoader.PlayerFallRects,
                          true, 0.01f, assetsLoader.Textures);

            LoadAnimation("fart_sustain_up", assetsLoader.PlayerFartRects,
                          true, 0.05f, assetsLoader.Textures);

            LoadAnimation("truck", assetsLoader.PlayerMerdaRects,
                          true, 0.01f, assetsLoader.Textures);

            PlayAnimation("fall");
        }
Beispiel #12
0
    void InitTest()
    {
        TextAsset EnemyJsonData = Resources.Load <TextAsset>("TextAssets/ShipDataSample");
        ShipData  EnemyData     = ShipDataHelper.JsonToData(EnemyJsonData.text);

        string     EnemyModelPath = "Ships/" + EnemyData.ModelName;
        GameObject EnemyShipModel = GameObject.Instantiate(AssetsLoader.LoadPrefab(EnemyModelPath), this.transform);

        Ship EnemyShip = EnemyShipModel.AddComponent <Ship>();

        EnemyShip.Init(EnemyData);
        EnemyShip.ShipData.cannonNum = 1000;

        EnemyShipModel.AddComponent <EnemyShipController>();


        //set tag
        EnemyShipModel.tag = "Enemy";

        SetCollider(EnemyShipModel);

        Distance1 = DistanceToClose;
        Distance2 = DistanceToFlee;
        //ShowShipStats(EnemyShip);
    }
Beispiel #13
0
 private async void RC_Extract_Click(object sender, RoutedEventArgs e)
 {
     if (ListBox_Main.SelectedIndex >= 0)
     {
         await AssetsLoader.LoadSelectedAsset();
     }
 }
Beispiel #14
0
 private async void ListBox_Main_MouseDoubleClick(object sender, System.Windows.Input.MouseButtonEventArgs e)
 {
     if (!AssetsLoader.isRunning && ListBox_Main.SelectedIndex >= 0)
     {
         await AssetsLoader.LoadSelectedAsset();
     }
 }
 public override void Hide()
 {
     base.Hide();
     PreviewEntity.SetActive(false);
     EngineRef.ECSWorld.Refresh();
     AssetsLoader.DropCachedTexture(TestMaterial.AlbedoMapAsset);
 }
Beispiel #16
0
        public RellowGame(
            IScreenTransformationMatrixProvider matrixScaleProvider,
            AssetsLoader assetsLoader,
            GameOrchestrator gameOrchestrator,
            SoundManager soundManager,
            ISettingsRepository settingsRepository,
            ILocalizedStringsRepository localizedStringsRepository)
        {
            _localizedStringsRepository = localizedStringsRepository;
            _matrixScaleProvider        = matrixScaleProvider ?? throw new ArgumentNullException(nameof(matrixScaleProvider));

            _gameButtonsManager = new GameButtonsManager(
                assetsLoader,
                localizedStringsRepository,
                new Vector2(60f, 800f));

            _scoreDifferentialPopups = new List <PopupText>();

            _soundManager       = soundManager ?? throw new ArgumentNullException(nameof(soundManager));
            _gameOrchestrator   = gameOrchestrator ?? throw new ArgumentNullException(nameof(gameOrchestrator));
            _settingsRepository = settingsRepository ?? throw new ArgumentNullException(nameof(settingsRepository));

            _currentGameState = GameStates.PlayingWaitingForInput;
            _gameColors       = new UIColors(_gameButtonsManager.SpawnableColors.Select(c => c.ColorGraphic).ToArray());

            _choiceTime = TimeSpan.FromSeconds(2.5);

            _backgroundRectangle = new Rectangle(0, 0, matrixScaleProvider.VirtualWidth, matrixScaleProvider.VirtualHeight);

            _scoreTextTitle = localizedStringsRepository.Get(GameStringsLoader.ScoreStringKey);

            _gameButtonsManager = new GameButtonsManager(
                assetsLoader,
                localizedStringsRepository,
                new Vector2(60f, 720f));
            _gameButtonsManager.OnLost += _gameButtonsManager_OnLost;
            _gameButtonsManager.OnWon  += _gameButtonsManager_OnWon;

            _writingFont = assetsLoader.WritingFont;

            _colorTextBackgroundRectangle = new Rectangle(
                0, 500,
                matrixScaleProvider.VirtualWidth,
                120);

            _numberOfVictories = 0;
            _score             = 0;

            _timeProgressBar = new ProgressBar(
                new Rectangle(
                    0, 0,
                    matrixScaleProvider.VirtualWidth,
                    matrixScaleProvider.VirtualHeight),
                _gameColors.TimerBarColor,
                (int)_choiceTime.TotalMilliseconds);

            UpdateScoreString();
            NewRound();
        }
Beispiel #17
0
 private async void ListBox_Main_MouseDoubleClick(object sender, System.Windows.Input.MouseButtonEventArgs e)
 {
     if (!AssetsLoader.isRunning && ListBox_Main.SelectedIndex >= 0)
     {
         //FWindow.FCurrentAsset = ListBox_Main.SelectedItem.ToString(); <-- already in the 'Load' loop
         await AssetsLoader.LoadSelectedAsset();
     }
 }
Beispiel #18
0
 private async void RC_ExtractFolders_Click(object sender, RoutedEventArgs e)
 {
     if (TreeView_Main.SelectedItem != null)
     {
         string path = TreeViewUtility.GetFullPath(FWindow.TVItem);
         await AssetsLoader.ExtractFoldersAndSub(path);
     }
 }
Beispiel #19
0
 private async void RC_Extract_Click(object sender, RoutedEventArgs e)
 {
     if (ListBox_Main.SelectedIndex >= 0)
     {
         //FWindow.FCurrentAsset = ListBox_Main.SelectedItem.ToString(); <-- already in the 'Load' loop
         await AssetsLoader.LoadSelectedAsset();
     }
 }
Beispiel #20
0
 /// <summary>
 /// Non redundant set Vertex shader.
 /// </summary>
 /// <param name="name">Shader name.</param>
 protected void SetVertexShader(string name)
 {
     if (CurrentVS == name)
     {
         return;
     }
     GetContext.VertexShader.Set(AssetsLoader.GetShader <VertexShader>(name));
     CurrentVS = name;
 }
Beispiel #21
0
    /// <summary>
    /// 加载UI资源并打开热更界面
    /// </summary>
    /// <typeparam name="T"></typeparam>
    /// <param name="stackName">界面名</param>
    /// <param name="onUIOpen">打开热更界面后的回调函数</param>
    /// <param name="UIABNames">需要加载的资源列表</param>
    public static void LoadAndOpenHotFixUI <T>(this string stackName, Action <T> onUIOpen, params string[] UIABNames) where T : UIModularHotFixer, new()
    {
        int max = UIABNames.Length;

        if (max > 0)
        {
            Framework    framework = Framework.Instance;
            UIManager    uis       = framework.GetUnit <UIManager>(Framework.UNIT_UI);
            AssetBundles abs       = framework.GetUnit <AssetBundles>(Framework.UNIT_AB);
            if (abs != default)
            {
                AssetsLoader loader = new AssetsLoader();
                loader.CompleteEvent.AddListener((suc, ld) =>
                {
                    if (suc)
                    {
                        ld?.Dispose();
                        uis.OnLoadingAlert?.Invoke(false);

                        T result = OpenHotFixUI <T>(stackName);
                        onUIOpen?.Invoke(result);
                    }
                    else
                    {
                    }
                });
                string abName;
                for (int i = 0; i < max; i++)
                {
                    abName = UIABNames[i];
                    if (!abs.HasBundel(abName))
                    {
                        loader.Add(abName, true, true);
                    }
                    else
                    {
                    }
                }
                if (loader.ResList.Count > 0)
                {
                    uis.OnLoadingAlert?.Invoke(true);
                }
                else
                {
                }
                loader.Load(out _);
            }
            else
            {
            }
        }
        else
        {
            T result = OpenHotFixUI <T>(stackName);
            onUIOpen?.Invoke(result);
        }
    }
Beispiel #22
0
 /// <summary>
 /// Non redundant set Compute shader.
 /// </summary>
 /// <param name="name">Shader name.</param>
 /// <returns><c>True</c> if change shader.</returns>
 protected bool SetComputeShader(string name)
 {
     if (CurrentCS == name)
     {
         return(false);
     }
     GetContext.ComputeShader.Set(AssetsLoader.GetShader <ComputeShader>(name));
     CurrentCS = name;
     return(true);
 }
Beispiel #23
0
 /// <summary>
 /// Non redundant set Domain shader.
 /// </summary>
 /// <param name="name">Shader name.</param>
 /// <returns><c>True</c> if change shader.</returns>
 protected bool SetDomainShader(string name)
 {
     if (CurrentDS == name)
     {
         return(false);
     }
     GetContext.DomainShader.Set(AssetsLoader.GetShader <DomainShader>(name));
     CurrentDS = name;
     return(true);
 }
Beispiel #24
0
 /// <summary>
 /// Non redundant set Hull shader.
 /// </summary>
 /// <param name="name">Shader name.</param>
 /// <returns><c>True</c> if change shader.</returns>
 protected bool SetHullShader(string name)
 {
     if (CurrentHS == name)
     {
         return(false);
     }
     GetContext.HullShader.Set(AssetsLoader.GetShader <HullShader>(name));
     CurrentHS = name;
     return(true);
 }
        private void LoadIcon(string url,
                              LoadCompleteCallback onSuccess,
                              LoadErrorCallback onFail)
        {
            AssetsLoader loader = new AssetsLoader("icon/" + url, url, new ArrayList {
                onSuccess, onFail
            });

            loader.Load(this.OnLoadComplete, null, this.OnLoadError);
        }
        private void OnLoadComplete(object sender, AssetsProxy assetsproxy, object data)
        {
            AssetsLoader loader = ( AssetsLoader )sender;

            ArrayList            al        = ( ArrayList )loader.data;
            LoadCompleteCallback onSuccess = ( LoadCompleteCallback )al[0];

            Texture2D texture = assetsproxy.LoadAsset <Texture2D>(loader.assetName);

            onSuccess?.Invoke(texture);
        }
        public override void Show(string assetName)
        {
            base.Show(assetName);
            EngineRef.SetViewsControlsEnabled(true, true, true, false, true);

            EngineRef.CameraEntity.GetComponent <Transform>().SetTransformations(new Vector3(0f, 0, -1.5f),
                                                                                 Quaternion.RotationYawPitchRoll(MathUtil.Pi, 0, 0));
            RendererComponent.SetMaterial(AssetsLoader.LoadMaterialInfo(assetName));

            PreviewEntity.SetActive(true);
            EngineRef.ECSWorld.Refresh();
        }
Beispiel #28
0
 private void ApplyShader(Material material)
 {
     if (material.shader.name != "Custom/DistrictBuilding")
     {
         material.shader = AssetsLoader.GetAsset("DistrictBuilding") as Shader;
         material.SetFloat("_MinHeight", float.MinValue);
         material.SetFloat("_MaxHeight", float.MaxValue);
         material.SetFloat("_WallProgress", 1f);
         material.SetTexture("_MainTex", AssetsLoader.GetAsset("largehousetex_default") as Texture2D);
         material.SetTexture("_MaskTex", AssetsLoader.GetAsset("largehousetex_mask") as Texture2D);
         material.color = Color.white;
     }
 }
    void Start()
    {
        _myShip = this.gameObject.GetComponent <Ship>();

        GameObject pressFX = GameObject.Instantiate(AssetsLoader.LoadPrefab("PressEffect"));

        _pressEffect = pressFX.GetComponent <ParticleSystem>();

        SetHPBar();

        maxArmour = _myShip.OnGetArmour();
        Debug.Log("!!!!!!!!!!!!!maxArmour =====" + maxArmour);
    }
Beispiel #30
0
    private void InitializeCompute()
    {
        if (renderTexture == null)
        {
            renderTexture = new RenderTexture(textureWidth, textureHeight, 0, RenderTextureFormat.RGB111110Float);
            renderTexture.enableRandomWrite = true;
            renderTexture.Create();
        }

        compute  = AssetsLoader.GetAsset("GenerateSVTexture") as ComputeShader;
        kernelID = compute.FindKernel("CSMain");

        image.texture = renderTexture;
    }