What is says in the title.
This is that last intended diff of the UM rewrite, so bar bug fixes I will stop work on UM proper for a while to get some stability.
Differential D2067
UnitMotion post-rewrite cleanup - remove dead code, common MoveTo, rename BeginPathing, move some functions around for better readability. wraitii on Jul 13 2019, 2:30 PM. Authored by
Details
What is says in the title. This is that last intended diff of the UM rewrite, so bar bug fixes I will stop work on UM proper for a while to get some stability. Check that indeed this changes no behaviour.
Diff Detail
Event TimelineComment Actions Build failure - The Moirai have given mortals hearts that can endure. Link to build: https://jenkins.wildfiregames.com/job/docker-differential/48/display/redirect Comment Actions I've been testing this, UM looks so much better now than a few weeks ago! Kudos @wraitii. Comment Actions Rebased, cleaned up slightly. Rename IsMoving() to IsMoveRequested(), and add some more comments. Comment Actions Successful build - Chance fights ever on the side of the prudent. Linter detected issues: Executing section Source... source/simulation2/components/ICmpUnitMotion.h | 34| class·ICmpUnitMotion·:·public·IComponent | | [MAJOR] CPPCheckBear (syntaxError): | | Code 'classICmpUnitMotion:' is invalid C code. Use --std or --language to configure the language. Executing section JS... | | [NORMAL] ESLintBear (object-curly-spacing): | | A space is required after '{'. |----| | /zpool0/trunk/binaries/data/mods/public/simulation/components/Formation.js | |++++| /zpool0/trunk/binaries/data/mods/public/simulation/components/Formation.js | 119| 119| this.formationMembersWithAura = []; // Members with a formation aura | 120| 120| this.width = 0; | 121| 121| this.depth = 0; | 122| |- this.oldOrientation = {"sin": 0, "cos": 0}; | | 122|+ this.oldOrientation = { "sin": 0, "cos": 0}; | 123| 123| this.twinFormations = []; | 124| 124| // distance from which two twin formations will merge into one. | 125| 125| this.formationSeparation = 0; | | [NORMAL] ESLintBear (object-curly-spacing): | | A space is required before '}'. |----| | /zpool0/trunk/binaries/data/mods/public/simulation/components/Formation.js | |++++| /zpool0/trunk/binaries/data/mods/public/simulation/components/Formation.js | 119| 119| this.formationMembersWithAura = []; // Members with a formation aura | 120| 120| this.width = 0; | 121| 121| this.depth = 0; | 122| |- this.oldOrientation = {"sin": 0, "cos": 0}; | | 122|+ this.oldOrientation = {"sin": 0, "cos": 0 }; | 123| 123| this.twinFormations = []; | 124| 124| // distance from which two twin formations will merge into one. | 125| 125| this.formationSeparation = 0; | | [NORMAL] ESLintBear (object-curly-spacing): | | A space is required after '{'. |----| | /zpool0/trunk/binaries/data/mods/public/simulation/components/Formation.js | |++++| /zpool0/trunk/binaries/data/mods/public/simulation/components/Formation.js | 137| 137| | 138| 138| Formation.prototype.GetSize = function() | 139| 139| { | 140| |- return {"width": this.width, "depth": this.depth}; | | 140|+ return { "width": this.width, "depth": this.depth}; | 141| 141| }; | 142| 142| | 143| 143| Formation.prototype.GetSpeedMultiplier = function() | | [NORMAL] ESLintBear (object-curly-spacing): | | A space is required before '}'. |----| | /zpool0/trunk/binaries/data/mods/public/simulation/components/Formation.js | |++++| /zpool0/trunk/binaries/data/mods/public/simulation/components/Formation.js | 137| 137| | 138| 138| Formation.prototype.GetSize = function() | 139| 139| { | 140| |- return {"width": this.width, "depth": this.depth}; | | 140|+ return {"width": this.width, "depth": this.depth }; | 141| 141| }; | 142| 142| | 143| 143| Formation.prototype.GetSpeedMultiplier = function() | | [NORMAL] ESLintBear (object-curly-spacing): | | A space is required after '{'. |----| | /zpool0/trunk/binaries/data/mods/public/simulation/components/Formation.js | |++++| /zpool0/trunk/binaries/data/mods/public/simulation/components/Formation.js | 554| 554| footprints.push(cmpFootprint.GetShape()); | 555| 555| } | 556| 556| if (!footprints.length) | 557| |- return {"width":1, "depth": 1}; | | 557|+ return { "width":1, "depth": 1}; | 558| 558| | 559| 559| var r = {"width": 0, "depth": 0}; | 560| 560| for (var shape of footprints) | | [NORMAL] ESLintBear (key-spacing): | | Missing space before value for key 'width'. |----| | /zpool0/trunk/binaries/data/mods/public/simulation/components/Formation.js | |++++| /zpool0/trunk/binaries/data/mods/public/simulation/components/Formation.js | 554| 554| footprints.push(cmpFootprint.GetShape()); | 555| 555| } | 556| 556| if (!footprints.length) | 557| |- return {"width":1, "depth": 1}; | | 557|+ return {"width": 1, "depth": 1}; | 558| 558| | 559| 559| var r = {"width": 0, "depth": 0}; | 560| 560| for (var shape of footprints) | | [NORMAL] ESLintBear (object-curly-spacing): | | A space is required before '}'. |----| | /zpool0/trunk/binaries/data/mods/public/simulation/components/Formation.js | |++++| /zpool0/trunk/binaries/data/mods/public/simulation/components/Formation.js | 554| 554| footprints.push(cmpFootprint.GetShape()); | 555| 555| } | 556| 556| if (!footprints.length) | 557| |- return {"width":1, "depth": 1}; | | 557|+ return {"width":1, "depth": 1 }; | 558| 558| | 559| 559| var r = {"width": 0, "depth": 0}; | 560| 560| for (var shape of footprints) | | [NORMAL] ESLintBear (object-curly-spacing): | | A space is required after '{'. |----| | /zpool0/trunk/binaries/data/mods/public/simulation/components/Formation.js | |++++| /zpool0/trunk/binaries/data/mods/public/simulation/components/Formation.js | 556| 556| if (!footprints.length) | 557| 557| return {"width":1, "depth": 1}; | 558| 558| | 559| |- var r = {"width": 0, "depth": 0}; | | 559|+ var r = { "width": 0, "depth": 0}; | 560| 560| for (var shape of footprints) | 561| 561| { | 562| 562| if (shape.type == "circle") | | [NORMAL] ESLintBear (object-curly-spacing): | | A space is required before '}'. |----| | /zpool0/trunk/binaries/data/mods/public/simulation/components/Formation.js | |++++| /zpool0/trunk/binaries/data/mods/public/simulation/components/Formation.js | 556| 556| if (!footprints.length) | 557| 557| return {"width":1, "depth": 1}; | 558| 558| | 559| |- var r = {"width": 0, "depth": 0}; | | 559|+ var r = {"width": 0, "depth": 0 }; | 560| 560| for (var shape of footprints) | 561| 561| { | 562| 562| if (shape.type == "circle") | | [NORMAL] ESLintBear (comma-spacing): | | A space is required after ','. |----| | /zpool0/trunk/binaries/data/mods/public/simulation/components/Formation.js | |++++| /zpool0/trunk/binaries/data/mods/public/simulation/components/Formation.js | 582| 582| separation.depth *= this.separationMultiplier.depth; | 583| 583| | 584| 584| if (this.columnar) | 585| |- var sortingClasses = ["Cavalry","Infantry"]; | | 585|+ var sortingClasses = ["Cavalry", "Infantry"]; | 586| 586| else | 587| 587| var sortingClasses = this.sortingClasses.slice(); | 588| 588| sortingClasses.push("Unknown"); | | [NORMAL] ESLintBear (object-curly-spacing): | | A space is required after '{'. |----| | /zpool0/trunk/binaries/data/mods/public/simulation/components/Formation.js | |++++| /zpool0/trunk/binaries/data/mods/public/simulation/components/Formation.js | 602| 602| { | 603| 603| if (classes.indexOf(sortingClasses[c]) > -1) | 604| 604| { | 605| |- types[sortingClasses[c]].push({"ent": active[i], "pos": positions[i]}); | | 605|+ types[sortingClasses[c]].push({ "ent": active[i], "pos": positions[i]}); | 606| 606| done = true; | 607| 607| break; | 608| 608| } | | [NORMAL] ESLintBear (object-curly-spacing): | | A space is required before '}'. |----| | /zpool0/trunk/binaries/data/mods/public/simulation/components/Formation.js | |++++| /zpool0/trunk/binaries/data/mods/public/simulation/components/Formation.js | 602| 602| { | 603| 603| if (classes.indexOf(sortingClasses[c]) > -1) | 604| 604| { | 605| |- types[sortingClasses[c]].push({"ent": active[i], "pos": positions[i]}); | | 605|+ types[sortingClasses[c]].push({"ent": active[i], "pos": positions[i] }); | 606| 606| done = true; | 607| 607| break; | 608| 608| } | | [NORMAL] ESLintBear (dot-notation): | | ["Unknown"] is better written in dot notation. |----| | /zpool0/trunk/binaries/data/mods/public/simulation/components/Formation.js | |++++| /zpool0/trunk/binaries/data/mods/public/simulation/components/Formation.js | 608| 608| } | 609| 609| } | 610| 610| if (!done) | 611| |- types["Unknown"].push({"ent": active[i], "pos": positions[i]}); | | 611|+ types.Unknown.push({"ent": active[i], "pos": positions[i]}); | 612| 612| } | 613| 613| | 614| 614| var count = active.length; | | [NORMAL] ESLintBear (object-curly-spacing): | | A space is required after '{'. |----| | /zpool0/trunk/binaries/data/mods/public/simulation/components/Formation.js | |++++| /zpool0/trunk/binaries/data/mods/public/simulation/components/Formation.js | 608| 608| } | 609| 609| } | 610| 610| if (!done) | 611| |- types["Unknown"].push({"ent": active[i], "pos": positions[i]}); | | 611|+ types["Unknown"].push({ "ent": active[i], "pos": positions[i]}); | 612| 612| } | 613| 613| | 614| 614| var count = active.length; | | [NORMAL] ESLintBear (object-curly-spacing): | | A space is required before '}'. |----| | /zpool0/trunk/binaries/data/mods/public/simulation/components/Formation.js | |++++| /zpool0/trunk/binaries/data/mods/public/simulation/components/Formation.js | 608| 608| } | 609| 609| } | 610| 610| if (!done) | 611| |- types["Unknown"].push({"ent": active[i], "pos": positions[i]}); | | 611|+ types["Unknown"].push({"ent": active[i], "pos": positions[i] }); | 612| 612| } | 613| 613| | 614| 614| var count = active.length; | | [NORMAL] ESLintBear (comma-spacing): | | A space is required after ','. |----| | /zpool0/trunk/binaries/data/mods/public/simulation/components/Formation.js | |++++| /zpool0/trunk/binaries/data/mods/public/simulation/components/Formation.js | 626| 626| if (this.columnar) | 627| 627| { | 628| 628| shape = "square"; | 629| |- cols = Math.min(count,3); | | 629|+ cols = Math.min(count, 3); | 630| 630| shiftRows = false; | 631| 631| centerGap = 0; | 632| 632| sortingOrder = null; | | [NORMAL] ESLintBear (space-before-function-paren): | | Unexpected space before function parentheses. |----| | /zpool0/trunk/binaries/data/mods/public/simulation/components/Formation.js | |++++| /zpool0/trunk/binaries/data/mods/public/simulation/components/Formation.js | 721| 721| // calculating offset distances without a zero average makes no sense, as the formation | 722| 722| // will jump to a different position any time | 723| 723| var avgoffset = Vector2D.average(offsets); | 724| |- offsets.forEach(function (o) {o.sub(avgoffset);}); | | 724|+ offsets.forEach(function(o) {o.sub(avgoffset);}); | 725| 725| | 726| 726| // sort the available places in certain ways | 727| 727| // the places first in the list will contain the heaviest units as defined by the order | | [NORMAL] ESLintBear (object-curly-spacing): | | A space is required after '{'. |----| | /zpool0/trunk/binaries/data/mods/public/simulation/components/Formation.js | |++++| /zpool0/trunk/binaries/data/mods/public/simulation/components/Formation.js | 780| 780| closestOffsetId = i; | 781| 781| } | 782| 782| } | 783| |- this.memberPositions[entPos.ent] = {"row": offsets[closestOffsetId].row, "column":offsets[closestOffsetId].column}; | | 783|+ this.memberPositions[entPos.ent] = { "row": offsets[closestOffsetId].row, "column":offsets[closestOffsetId].column}; | 784| 784| return closestOffsetId; | 785| 785| }; | 786| 786| | | [NORMAL] ESLintBear (key-spacing): | | Missing space before value for key 'column'. |----| | /zpool0/trunk/binaries/data/mods/public/simulation/components/Formation.js | |++++| /zpool0/trunk/binaries/data/mods/public/simulation/components/Formation.js | 780| 780| closestOffsetId = i; | 781| 781| } | 782| 782| } | 783| |- this.memberPositions[entPos.ent] = {"row": offsets[closestOffsetId].row, "column":offsets[closestOffsetId].column}; | | 783|+ this.memberPositions[entPos.ent] = {"row": offsets[closestOffsetId].row, "column": offsets[closestOffsetId].column}; | 784| 784| return closestOffsetId; | 785| 785| }; | 786| 786| | | [NORMAL] ESLintBear (object-curly-spacing): | | A space is required before '}'. |----| | /zpool0/trunk/binaries/data/mods/public/simulation/components/Formation.js | |++++| /zpool0/trunk/binaries/data/mods/public/simulation/components/Formation.js | 780| 780| closestOffsetId = i; | 781| 781| } | 782| 782| } | 783| |- this.memberPositions[entPos.ent] = {"row": offsets[closestOffsetId].row, "column":offsets[closestOffsetId].column}; | | 783|+ this.memberPositions[entPos.ent] = {"row": offsets[closestOffsetId].row, "column":offsets[closestOffsetId].column }; | 784| 784| return closestOffsetId; | 785| 785| }; | 786| 786| | | [NORMAL] ESLintBear (object-curly-spacing): | | A space is required after '{'. |----| | /zpool0/trunk/binaries/data/mods/public/simulation/components/Formation.js | |++++| /zpool0/trunk/binaries/data/mods/public/simulation/components/Formation.js | 790| 790| Formation.prototype.GetRealOffsetPositions = function(offsets, pos) | 791| 791| { | 792| 792| var offsetPositions = []; | 793| |- var {sin, cos} = this.GetEstimatedOrientation(pos); | | 793|+ var { sin, cos} = this.GetEstimatedOrientation(pos); | 794| 794| // calculate the world positions | 795| 795| for (var o of offsets) | 796| 796| offsetPositions.push(new Vector2D(pos.x + o.y * sin + o.x * cos, pos.y + o.y * cos - o.x * sin)); | | [NORMAL] ESLintBear (object-curly-spacing): | | A space is required before '}'. |----| | /zpool0/trunk/binaries/data/mods/public/simulation/components/Formation.js | |++++| /zpool0/trunk/binaries/data/mods/public/simulation/components/Formation.js | 790| 790| Formation.prototype.GetRealOffsetPositions = function(offsets, pos) | 791| 791| { | 792| 792| var offsetPositions = []; | 793| |- var {sin, cos} = this.GetEstimatedOrientation(pos); | | 793|+ var {sin, cos } = this.GetEstimatedOrientation(pos); | 794| 794| // calculate the world positions | 795| 795| for (var o of offsets) | 796| 796| offsetPositions.push(new Vector2D(pos.x + o.y * sin + o.x * cos, pos.y + o.y * cos - o.x * sin)); | | [NORMAL] ESLintBear (object-curly-spacing): | | A space is required after '{'. |----| | /zpool0/trunk/binaries/data/mods/public/simulation/components/Formation.js | |++++| /zpool0/trunk/binaries/data/mods/public/simulation/components/Formation.js | 807| 807| Formation.prototype.GetEstimatedOrientation = function(pos) | 808| 808| { | 809| 809| var cmpUnitAI = Engine.QueryInterface(this.entity, IID_UnitAI); | 810| |- var r = {"sin": 0, "cos": 1}; | | 810|+ var r = { "sin": 0, "cos": 1}; | 811| 811| var unitAIState = cmpUnitAI.GetCurrentState(); | 812| 812| if (unitAIState == "FORMATIONCONTROLLER.WALKING" || unitAIState == "FORMATIONCONTROLLER.COMBAT.APPROACHING") | 813| 813| { | | [NORMAL] ESLintBear (object-curly-spacing): | | A space is required before '}'. |----| | /zpool0/trunk/binaries/data/mods/public/simulation/components/Formation.js | |++++| /zpool0/trunk/binaries/data/mods/public/simulation/components/Formation.js | 807| 807| Formation.prototype.GetEstimatedOrientation = function(pos) | 808| 808| { | 809| 809| var cmpUnitAI = Engine.QueryInterface(this.entity, IID_UnitAI); | 810| |- var r = {"sin": 0, "cos": 1}; | | 810|+ var r = {"sin": 0, "cos": 1 }; | 811| 811| var unitAIState = cmpUnitAI.GetCurrentState(); | 812| 812| if (unitAIState == "FORMATIONCONTROLLER.WALKING" || unitAIState == "FORMATIONCONTROLLER.COMBAT.APPROACHING") | 813| 813| { | | [NORMAL] ESLintBear (comma-spacing): | | A space is required after ','. |----| | /zpool0/trunk/binaries/data/mods/public/simulation/components/Formation.js | |++++| /zpool0/trunk/binaries/data/mods/public/simulation/components/Formation.js | 889| 889| cmpOtherFormation.RemoveMembers(otherMembers); | 890| 890| this.AddMembers(otherMembers); | 891| 891| Engine.DestroyEntity(this.twinFormations[i]); | 892| |- this.twinFormations.splice(i,1); | | 892|+ this.twinFormations.splice(i, 1); | 893| 893| } | 894| 894| // Switch between column and box if necessary | 895| 895| var cmpUnitAI = Engine.QueryInterface(this.entity, IID_UnitAI); binaries/data/mods/public/simulation/components/Formation.js | 326| » for·(var·ent·of·this.formationMembersWithAura) | | [NORMAL] JSHintBear: | | 'ent' is already defined. binaries/data/mods/public/simulation/components/Formation.js | 413| » for·(var·ent·of·this.formationMembersWithAura) | | [NORMAL] JSHintBear: | | 'ent' is already defined. binaries/data/mods/public/simulation/components/Formation.js | 459| » var·cmpPosition·=·Engine.QueryInterface(this.entity,·IID_Position); | | [NORMAL] JSHintBear: | | 'cmpPosition' is already defined. binaries/data/mods/public/simulation/components/Formation.js | 500| » » var·cmpUnitAI·=·Engine.QueryInterface(offset.ent,·IID_UnitAI); | | [NORMAL] JSHintBear: | | 'cmpUnitAI' is already defined. binaries/data/mods/public/simulation/components/Formation.js | 535| » var·cmpPosition·=·Engine.QueryInterface(this.entity,·IID_Position); | | [NORMAL] JSHintBear: | | 'cmpPosition' is already defined. binaries/data/mods/public/simulation/components/Formation.js | 587| » » var·sortingClasses·=·this.sortingClasses.slice(); | | [NORMAL] JSHintBear: | | 'sortingClasses' is already defined. binaries/data/mods/public/simulation/components/Formation.js | 596| » for·(var·i·in·active) | | [NORMAL] JSHintBear: | | 'i' is already defined. binaries/data/mods/public/simulation/components/Formation.js | 611| » » » types["Unknown"].push({"ent":·active[i],·"pos":·positions[i]}); | | [NORMAL] JSHintBear: | | ['Unknown'] is better written in dot notation. binaries/data/mods/public/simulation/components/Formation.js | 651| » » for·(var·i·=·0;·i·<·count;·++i) | | [NORMAL] JSHintBear: | | 'i' is already defined. binaries/data/mods/public/simulation/components/Formation.js | 685| » » » » » var·n·=·r·+·1; | | [NORMAL] JSHintBear: | | 'n' is already defined. binaries/data/mods/public/simulation/components/Formation.js | 687| » » » » » var·n·=·r·*·2·+·1; | | [NORMAL] JSHintBear: | | 'n' is already defined. binaries/data/mods/public/simulation/components/Formation.js | 691| » » » for·(var·c·=·0;·c·<·n·&&·left·>·0;·++c) | | [NORMAL] JSHintBear: | | 'c' is already defined. binaries/data/mods/public/simulation/components/Formation.js | 698| » » » » » var·x·=·side·*·Math.ceil(c/2)·*·separation.width; | | [NORMAL] JSHintBear: | | 'x' is already defined. binaries/data/mods/public/simulation/components/Formation.js | 701| » » » » » if·(x·==·0)·//·don't·use·the·center·position·with·a·center·gap | | [NORMAL] JSHintBear: | | 'x' used out of scope. binaries/data/mods/public/simulation/components/Formation.js | 703| » » » » » x·+=·side·*·centerGap·/·2; | | [NORMAL] JSHintBear: | | 'x' used out of scope. binaries/data/mods/public/simulation/components/Formation.js | 709| » » » » offsets.push(new·Vector2D(x·+·r1,·z·+·r2)); | | [NORMAL] JSHintBear: | | 'x' used out of scope. binaries/data/mods/public/simulation/components/Formation.js | 689| » » » if·(!shiftRows·&&·n·>·left) | | [NORMAL] JSHintBear: | | 'n' used out of scope. binaries/data/mods/public/simulation/components/Formation.js | 690| » » » » n·=·left; | | [NORMAL] JSHintBear: | | 'n' used out of scope. binaries/data/mods/public/simulation/components/Formation.js | 691| » » » for·(var·c·=·0;·c·<·n·&&·left·>·0;·++c) | | [NORMAL] JSHintBear: | | 'n' used out of scope. binaries/data/mods/public/simulation/components/Formation.js | 695| » » » » if·(n%2·==·0) | | [NORMAL] JSHintBear: | | 'n' used out of scope. binaries/data/mods/public/simulation/components/Formation.js | 705| » » » » var·column·=·Math.ceil(n/2)·+·Math.ceil(c/2)·*·side; | | [NORMAL] JSHintBear: | | 'n' used out of scope. binaries/data/mods/public/simulation/components/Formation.js | 715| » » » this.maxColumnsUsed[r]·=·n; | | [NORMAL] JSHintBear: | | 'n' used out of scope. binaries/data/mods/public/simulation/components/Formation.js | 744| » for·(var·i·=·sortingClasses.length;·i;·--i) | | [NORMAL] JSHintBear: | | 'i' is already defined. binaries/data/mods/public/simulation/components/Formation.js | 588| » sortingClasses.push("Unknown"); | | [NORMAL] JSHintBear: | | 'sortingClasses' used out of scope. binaries/data/mods/public/simulation/components/Formation.js | 593| » for·(var·i·=·0;·i·<·sortingClasses.length;·++i) | | [NORMAL] JSHintBear: | | 'sortingClasses' used out of scope. binaries/data/mods/public/simulation/components/Formation.js | 594| » » types[sortingClasses[i]]·=·[]; | | [NORMAL] JSHintBear: | | 'sortingClasses' used out of scope. binaries/data/mods/public/simulation/components/Formation.js | 601| » » for·(var·c·=·0;·c·<·sortingClasses.length;·++c) | | [NORMAL] JSHintBear: | | 'sortingClasses' used out of scope. binaries/data/mods/public/simulation/components/Formation.js | 603| » » » if·(classes.indexOf(sortingClasses[c])·>·-1) | | [NORMAL] JSHintBear: | | 'sortingClasses' used out of scope. binaries/data/mods/public/simulation/components/Formation.js | 605| » » » » types[sortingClasses[c]].push({"ent":·active[i],·"pos":·positions[i]}); | | [NORMAL] JSHintBear: | | 'sortingClasses' used out of scope. binaries/data/mods/public/simulation/components/Formation.js | 744| » for·(var·i·=·sortingClasses.length;·i;·--i) | | [NORMAL] JSHintBear: | | 'sortingClasses' used out of scope. binaries/data/mods/public/simulation/components/Formation.js | 746| » » var·t·=·types[sortingClasses[i-1]]; | | [NORMAL] JSHintBear: | | 'sortingClasses' used out of scope. binaries/data/mods/public/simulation/components/Formation.js | 851| » var·cmpUnitMotion·=·Engine.QueryInterface(this.entity,·IID_UnitMotion); | | [NORMAL] JSHintBear: | | 'cmpUnitMotion' is already defined. Executing section cli... Link to build: https://jenkins.wildfiregames.com/job/docker-differential/256/display/redirect |