‫Hallo en welkom.
‫In deze lezing gaan we onze pooltrigger refactoren, zodat het klaar is voor ons om meer code toe te
‫voegen.
‫Op dit moment liep het echt uit de hand wie het gingen refactoreren naar
‫een kleine functie als deze die echt veel eenvoudiger te lezen is.
‫Laten we erin duiken en kijken hoe we deze refactor kunnen doen.
‫Oké.
‫Dus we willen wat geluid in ons spel brengen en de plaats waar we dit gaan doen is in het geweer
‫als we schieten.
‫Dat is de eerste aanloophaven.
‫Ik denk dat een mooi soort schotgeluid, een impactgeluid geweldig zou zijn.
‫Het enige probleem is dat toen ik terugkwam bij onze pull-trigger-functie, ik merkte dat deze bizar groot is
‫geworden.
‫Hij past niet op een van mijn schermen.
‫Het is ook een beetje moeilijk te lezen en te begrijpen waar we deze functionaliteit zouden plaatsen.
‫Dus hoewel we de moeite nemen om echt te begrijpen wat de functionaliteit hier is, is het misschien de moeite waard om
‫een snelle refactor uit te voeren of een deel van deze dingen in andere methoden te gebruiken, zodat het niet zo moeilijk te lezen
‫is.
‫Als je nu naar deze code gaat kijken en probeert uit te vinden wat de basisdingen zijn
‫die het doet, dan zul je zien dat een groot deel hiervan eigenlijk alleen voor onze lijn is opgezet.
‫Traceer dit hele stuk van regel 28 naar 43.
‫En wat zijn we aan het doen?
‫Wel, we krijgen de pion van de eigenaar, dan controleren we of we de controller van de eigenaar krijgen,
‫dan krijgen we de viewport daarvan, dan krijgen we de eindlocatie op basis van het maximale bereik en
‫dan passeren we in sommige hitparameters om dingen te negeren.
‫Dit alles is alleen ingesteld voor onze lijntracering, dus waarom halen we dat hier niet uit in zijn eigen functie?
‫Ik ga helemaal onderaan een nieuwe privé-functie maken.
‫Na onze variabelen zal het van bool return zijn, omdat we deze call hier die succes retourneert
‫in wezen willen vervangen door een die ons ook het hitresultaat geeft.
‫Dus we gaan dit doen als iets wat ik een gun trace-functie ga noemen en het zal hier
‫enkele parameters hebben.
‫Namelijk, een van hen wordt het hitresultaat.
‫Dus druk op resultaat, ampersand om er een referentie van te maken.
‫En omdat het geen constante referentie is, weten we dat het een out-parameter is.
‫Noem dit de hit.
‫En misschien is er nog een die we hier nodig hebben.
‫Ik kan namelijk zien dat de rotatie uit dit stuk code komt en in feite ontkennen we
‫die rotatie.
‫Dus waar we echt in geïnteresseerd zijn, is de opnamerichting.
‫Dus misschien is dat waar we voor moeten gaan.
‫Dus ik ga een F vector out-parameter maken.
‫Dus vector ampersand en het wordt deze opnamerichting.
‫Dit zijn de twee uitgangen die zullen komen bij gun trace.
‫Laten we nu doorgaan en de implementatie hier maken.
‫En wat we willen doen, is in wezen gewoon al deze code daarin kopiëren.
‫Zien hoe het gaat.
‫En we willen deze opname ook controleren.
‫Richting.
‫Haal dat eruit en plak het er vlak voor het einde in.
‫Of misschien hoort u gewoon nadat we onze spelerviewport hebben, we kunnen instellen dat hun opnamerichting gelijk moet zijn
‫aan de negatieve rotatie.
‫Maar het is belangrijk om hier op te merken dat we eigenlijk geen lokale variabele willen instellen.
‫Dus als je het type hier plaatst, wordt een lokale opnamerichting ingesteld.
‫We willen dat verwijderen zodat het de opnamerichting in de AMP-parameters instelt, wat in feite betekent dat
‫het de opnamerichting instelt die we gaan doorgeven in de functie die het aanroept.
‫Hetzelfde geldt voor de klap.
‫We moeten deze lokale treffer verwijderen, zodat de treffer die per kanaal wordt doorgegeven aan de lijntracering, de treffer is die
‫is doorgegeven aan de wapentracering.
‫En dan is er tenslotte nog iets anders te doen wat nu niet nodig is en ook dit is
‫succes.
‫Welnu, we hoeven alleen maar terug te keren naar het resultaat van de lijntracering per kanaal.
‫Dat zal zijn of ons wapenspoor is geslaagd.
‫We zijn er dus in geslaagd om deze inspringing een beetje blijvend te maken.
‫We kunnen het nu allemaal op één scherm passen, en het is een beetje gemakkelijker te begrijpen dat, ja,
‫dit alles te maken heeft met het verkrijgen van een wapenspoor.
‫We kunnen naar onze CP gaan en we kunnen nu ons basissucces hier neerzetten.
‫Dus Poule B-succes, we moeten instellen als het wapenspoor en we moeten hier enkele parameters doorgeven.
‫Dus we moeten die nog ergens declareren als het resultaat een hit is.
‫Het wordt er een van.
‫Het gaat gewoon raken.
‫En de andere zou een F-vector zijn die de opnamerichting wordt genoemd.
‫En die worden doorgegeven.
‫Dus we gaan eerst de treffer hebben, dan de schotrichting.
‫En dan puntkomma aan het einde daar.
‫Dus dat gaat het net een beetje makkelijker maken.
‫Ik zeg echter niet dat we ook de eigenaar-controller nodig hebben en ik wil niet dat het
‫wapenspoor verantwoordelijk is voor de eigenaar-controller of de eigenaar-controle vergeet.
‫Dat klinkt niet alsof het de verantwoordelijkheid is van een wapenspoor om dat te doen.
‫Het klinkt oké om een hit te krijgen.
‫Het klinkt goed omdat het een schotrichting is, maar ik ga de grens trekken bij het verkrijgen van de eigenaar-controller.
‫Dus daarvoor ga ik het erin stoppen, al deze code in een andere functie stoppen die ze allebei
‫kunnen aanroepen.
‫Dus dat wordt een functie die een controller retourneert.
‫Ster.
‫En we gaan het de jet owner controller noemen.
‫En we kunnen dat a.
‫Zoals we weten, is het niet bedoeld om een van de variabelen in onze wapenklasse te veranderen.
‫Laten we die implementatie maken.
‫Breng gewoon de implementatie van gun trace binnen, repareer eventuele inkepingen indien nodig.
‫En we gaan door en geven gewoon de controle terug aan de eigenaar.
‫U hoeft hier dus geen nagelcontrole te doen.
‫Die nagelcontrole moeten we doen in de functie die het gebruikt.
‫Dus we brengen dat naar voren dat we hier ook geen variabele hoeven in te stellen.
‫We kunnen gewoon doorgaan en terugkeren.
‫Het zal dus redelijk overzichtelijk zijn.
‫Ik heb een controller, maar niet helemaal.
‫En dan gaan we de variabele in gun trace instellen.
‫Dus ik heb een controller en krijg zo een eigen controller.
‫Wat we dan doen een null return to null early return in gun trace, wat trouwens een boolean
‫moet retourneren omdat gun trace een boolean retourneert.
‫Dus we kunnen doorgaan en hier false retourneren, want als we geen eigen controller kunnen krijgen, kunnen we geen wapentracering
‫uitvoeren, daarom kunnen we onmogelijk iets raken.
‫En dan hebben we die eigenaar-controller ook nog eens nodig verderop.
‫Waar we een hit-acteur hebben, doen we dit om schade op te nemen.
‫En wat we hier eigenlijk willen doen, is de controle van de eigenaar hier binnenin onze hit-acteur krijgen.
‫Dus als we een acteur raken, krijgen we de eigenaar-controller weer.
‫Nu, ik weet dat er een paar wapenzoekers zijn.
‫Stap op een controller en dan doen we het weer als we een acteur raken.
‫Maar dat gebeurt alleen elke keer dat we een acteur raken.
‫Dus ik vind het niet erg om dat twee keer opnieuw te berekenen, omdat het de code net dat beetje leesbaarder
‫maakt zonder variabelen en status op te slaan die niet meer synchroon lopen.
‫Daar ga je dan.
‫We hebben nu de eigenaar-controller die we nodig hebben om schade op te lopen en de Apple-trigger ziet er veel beter uit.
‫Dat was het dan voor deze lezing.
‫Een snelle.
‫Gewoon onze pull-trigger herschikken, zodat we een goede basis hebben om vanuit de volgende lezing te werken.
‫En dat zal ik zien.
‫Oh, en het lijkt erop dat ik hier een beetje een booboo heb gemaakt en ze op een controller stappen.
‫Als je compiler probeert, zal het niets doen omdat deze geretourneerde waarde niet echt een aanwijzer
‫retourneert.
‫Dus we willen in dit geval meteen een null-pointer retourneren.
‫In principe kunnen we geen pull krijgen en dan kunnen we geen controller krijgen.
‫Dus we retourneren null pointer.