add io brick, misc fixes

This commit is contained in:
Redo
2024-06-22 18:17:21 -06:00
parent 38351b8a3e
commit a25f184c94
21 changed files with 12570 additions and 46 deletions

View File

@ -178,9 +178,10 @@ function LogicGate_RobotController_Data::LuaLogic_Callback(%this, %brick, %data)
%tbrick.schedule(0, delete);
}
} else if(%first $= "P") { // plant brick
LogicRobot_CreateBrickGroup();
%brickGroup = LogicRobot_CreateBrickGroup();
if(!isObject(%tbrick)) {
%robot.setTransform(vectorAdd(%pos, "0 0 0.2") SPC %robot.lr_rotation);
%nbrick = new fxDTSBrick() {
datablock = brick1x1fData;
position = %pos;
@ -189,24 +190,34 @@ function LogicGate_RobotController_Data::LuaLogic_Callback(%this, %brick, %data)
shapeFxId = getWord(%field, 3);
isPlanted = 1;
};
%brickGroup.add(%nbrick);
%nbrick.setTransform(%pos SPC "0 0 1 0");
%nbrick.trustCheckFinished();
%err = %nbrick.plant();
if(%err != 0 && %err != 2 && %err != 3) {
if(%err == 1 || %err == 5 || %err == 3) {
%nbrick.delete();
} else {
%nbrick.setRaycasting(getWord(%field, 4));
%nbrick.setColliding (getWord(%field, 5));
%nbrick.setRendering (getWord(%field, 6));
BrickGroup_12345678.add(%nbrick);
%nbrick.setTrusted(1);
}
%robot.setTransform(%pos SPC %robot.lr_rotation);
} else {
%tbrick.setColor(getWord(%field, 1));
%tbrick.setColorFx(getWord(%field, 2));
%tbrick.setShapeFx(getWord(%field, 3));
%tbrick.setRaycasting(getWord(%field, 4));
%tbrick.setColliding (getWord(%field, 5));
%tbrick.setRendering (getWord(%field, 6));
}
} else if(%first $= "M") { // move
%pos = getWords(%field, 1, 3);
%rot = getWord(%field, 4);
%robot.setTransform(%pos SPC "0 0 1" SPC (%rot*$pi/2));
%robot.lr_rotation = "0 0 1" SPC (%rot*$pi/2);
%robot.setTransform(%pos SPC %robot.lr_rotation);
} else {
talk("invalid robot callback " @ %field);
}
@ -228,14 +239,15 @@ function LogicGate_RobotController_Data::getRelativeVector(%this, %obj, %vec) {
}
function LogicRobot_CreateBrickGroup() {
if(!isObject(BrickGroup_12345678)) {
new SimGroup(BrickGroup_12345678) {
bl_id = 12345678;
name = "\c1Robot";
QuotaObject = GlobalQuota;
};
mainBrickGroup.add(BrickGroup_12345678);
}
//if(!isObject(BrickGroup_12345678)) {
// new SimGroup(BrickGroup_12345678) {
// bl_id = 12345678;
// name = "\c1Robot";
// QuotaObject = GlobalQuota;
// };
// mainBrickGroup.add(BrickGroup_12345678);
//}
return BrickGroup_888888;
}
function LogicGate_RobotController_Data::createRobot(%this, %obj) {