04-04-2025, 10:51 AM
So it is quite possible. The easiest way is to set the positions when creating the room, but you can do it manually too. The body of the room (Addons\Room***\Scenes\Luder\Room\Room***) should contain a code, for example, for 10 positions:
"TTransform:local_room_position_group. {
TNode.SNode STransform :local_Sroom_position_group;
TNode.Parent TTransform :local_Scene;
Object.Name "room_position_group";
};
TTransform:local_Pos1. {
TNode.SNode STransform :local_SPos1;
TNode.Parent TTransform :local_room_position_group;
Object.Name "Pos1";
};
STransform:local_SPos1. {
SSimpleTransform.Translation Vector3f( -18.75, 0, -7.5 );
Object.Name "SPos1";
};
... repeat for Pos2, Pos3...Pos9
TTransform:local_Pos10. {
TNode.SNode STransform :local_SPos10;
TNode.Parent TTransform :local_room_position_group;
Object.Name "Pos10";
};
STransform:local_SPos10. {
SSimpleTransform.Translation Vector3f( 0, 0, 30.5 );
SSimpleTransform.Rotation Vector3f( 0, -180, 0 );
Object.Name "SPos10";
};
STransform :local_Sroom_position_group Object.Name "Sroom_position_group";
And the second file AvFurnitures.bs (Addons\VX.Room***\Scripts\Luder\Room**)
There for every Pos1, 2,3... there should be registered
AvFurniture:Pos1_Furniture. {
.RootNode "Room:room_position_group";
.Do [ AvFurnitureSituation :Pos1_FurnitureSituation . {
.AttrH {
.Type "*";
};
.Mappings [ "Pos1" , "%{ModelTRS}" ];
.Exports ["*" ];
};
];
.Description "Pos1";
};
AvFurniture:Pos2_Furniture. {
.RootNode "Room:room_position_group";
.Do [ AvFurnitureSituation :Pos2_FurnitureSituation . {
.AttrH {
.Type "*";
};
.Mappings [ "Pos2" , "%{ModelTRS}" ];
.Exports [ "*" ];
};
];
.Description "Pos2";
};
That's it.. :)
Operators:
SSimpleTransform.Translation Vector3f( 0, 0, 30.5 );
SSimpleTransform.Rotation Vector3f( 0, -180, 0 );
are responsible for the offset and rotation of the position relative to the center of the room coordinates.
"TTransform:local_room_position_group. {
TNode.SNode STransform :local_Sroom_position_group;
TNode.Parent TTransform :local_Scene;
Object.Name "room_position_group";
};
TTransform:local_Pos1. {
TNode.SNode STransform :local_SPos1;
TNode.Parent TTransform :local_room_position_group;
Object.Name "Pos1";
};
STransform:local_SPos1. {
SSimpleTransform.Translation Vector3f( -18.75, 0, -7.5 );
Object.Name "SPos1";
};
... repeat for Pos2, Pos3...Pos9
TTransform:local_Pos10. {
TNode.SNode STransform :local_SPos10;
TNode.Parent TTransform :local_room_position_group;
Object.Name "Pos10";
};
STransform:local_SPos10. {
SSimpleTransform.Translation Vector3f( 0, 0, 30.5 );
SSimpleTransform.Rotation Vector3f( 0, -180, 0 );
Object.Name "SPos10";
};
STransform :local_Sroom_position_group Object.Name "Sroom_position_group";
And the second file AvFurnitures.bs (Addons\VX.Room***\Scripts\Luder\Room**)
There for every Pos1, 2,3... there should be registered
AvFurniture:Pos1_Furniture. {
.RootNode "Room:room_position_group";
.Do [ AvFurnitureSituation :Pos1_FurnitureSituation . {
.AttrH {
.Type "*";
};
.Mappings [ "Pos1" , "%{ModelTRS}" ];
.Exports ["*" ];
};
];
.Description "Pos1";
};
AvFurniture:Pos2_Furniture. {
.RootNode "Room:room_position_group";
.Do [ AvFurnitureSituation :Pos2_FurnitureSituation . {
.AttrH {
.Type "*";
};
.Mappings [ "Pos2" , "%{ModelTRS}" ];
.Exports [ "*" ];
};
];
.Description "Pos2";
};
That's it.. :)
Operators:
SSimpleTransform.Translation Vector3f( 0, 0, 30.5 );
SSimpleTransform.Rotation Vector3f( 0, -180, 0 );
are responsible for the offset and rotation of the position relative to the center of the room coordinates.