function gameConnection::cameraxAdd(%this, %pos, %rot, %spd, %type, %path) {
if(%spd <= 0) {
commandToClient(%this, 'messageBoxOK', "Notice", "The path node could not be added because the speed is invalid.");
return;
}
switch$ (%type) {
case "Normal":
case "Position": %type = "Position Only";
case "Kink":
default:
commandToClient(%this, 'messageBoxOK', "Notice", "The path node could not be added because the type is invalid.");
return;
}
switch$ (%path) {
case "Linear":
case "Spline":
default:
commandToClient(%this, 'messageBoxOK', "Notice", "The path node could not be added because the path type is invalid.");
return;
}
%cam = %this.getCamerax();
%cam.pushFront(%pos SPC %rot, %spd, %type, %path);
if(%cam.sequenceLength < 20) {
%id = %cam.sequenceLength;
%cam.sequenceData[%id, "position"] = %pos;
%cam.sequenceData[%id, "rotation"] = %rot;
%cam.sequenceData[%id, "speed"] = %spd;
%cam.sequenceData[%id, "type"] = %type;
%cam.sequenceData[%id, "path"] = %path;
%cam.sequenceLength++;
}
else if(%cam.sequenceLength > 19) {
%cam.sequenceLength = 20;
for(%i=1;%i<20;%i++) {
%cam.sequenceData[%i - 1, "position"] = %pos;
%cam.sequenceData[%i - 1, "rotation"] = %rot;
%cam.sequenceData[%i - 1, "speed"] = %spd;
%cam.sequenceData[%i - 1, "type"] = %type;
%cam.sequenceData[%i - 1, "path"] = %path;
}
%cam.sequenceData[19, "position"] = %pos;
%cam.sequenceData[19, "rotation"] = %rot;
%cam.sequenceData[19, "speed"] = %spd;
%cam.sequenceData[19, "type"] = %type;
%cam.sequenceData[19, "path"] = %path;
}
if(%cam.sequenceLength > 19 && !%this.sequenceLengthWarned) {
%this.sequenceLengthWarned = true;
commandToClient(%this, "Warning", "You have reached the limit of 20 path nodes. Every node added from now on will erase a node at the start of the path.");
}
}