@@ -0,0 +1,174 @@ | |||
namespace GamecraftModdingAPI.Blocks | |||
{ | |||
public enum BlockIDs | |||
{ | |||
AluminiumCube, | |||
AxleS, | |||
Battery, | |||
HingeS, | |||
MotorS, | |||
HingeM, | |||
MotorM, | |||
TyreM, | |||
AxleM, | |||
IronCube, | |||
RubberCube, | |||
OiledCube, | |||
AluminiumConeSegment, //12 | |||
AluminiumCorner, | |||
AluminiumRoundedCorner, | |||
AluminiumSlicedCube, | |||
AluminiumRoundedSlicedCube, | |||
AluminiumCylinder, | |||
AluminiumPyramidSegment, | |||
AluminiumSlope, | |||
AluminiumRoundedSlope, | |||
AluminiumSphere, | |||
RubberConeSegment, //22 | |||
RubberCorner, | |||
RubberRoundedCorner, | |||
RubberSlicedCube, | |||
RubberRoundedSlicedCube, | |||
RubberCylinder, | |||
RubberPyramidSegment, | |||
RubberSlope, | |||
RubberRoundedSlope, | |||
RubberSphere, | |||
OiledConeSegment, //32 | |||
OiledCorner, | |||
OiledRoundedCorner, | |||
OiledSlicedCube, | |||
OiledRoundedSlicedCube, | |||
OiledCylinder, | |||
OiledPyramidSegment, | |||
OiledSlope, | |||
OiledRoundedSlope, | |||
OiledSphere, | |||
IronConeSegment, //42 | |||
IronCorner, | |||
IronRoundedCorner, | |||
IronSlicedCube, | |||
IronRoundedSlicedCube, | |||
IronCylinder, | |||
IronPyramidSegment, | |||
IronSlope, | |||
IronRoundedSlope, | |||
IronSphere, | |||
GlassCube, //52 | |||
GlassSlicedCube, | |||
GlassSlope, | |||
GlassCorner, | |||
GlassPyramidSegment, | |||
GlassRoundedSlicedCube, | |||
GlassRoundedSlope, | |||
GlassRoundedCorner, | |||
GlassConeSegment, | |||
GlassCylinder, | |||
GlassSphere, | |||
Lever, | |||
Reactor, //64 - one ID is skipped | |||
PlayerSpawn = 66, //Crashes without special handling | |||
SmallSpawn, | |||
MediumSpawn, | |||
LargeSpawn, | |||
BallJoint, | |||
UniversalJoint, | |||
ServoAxle, | |||
ServoHinge, | |||
StepperAxle, | |||
StepperHinge, | |||
TelescopicJoint, | |||
DampedSpring, | |||
ServoPiston, | |||
StepperPiston, | |||
PneumaticPiston, | |||
PneumaticHinge, | |||
PneumaticAxle, //82 | |||
PilotSeat = 90, //Might crash | |||
PassengerSeat, | |||
PilotControls, | |||
GrassCube, | |||
DirtCube, | |||
GrassConeSegment, | |||
GrassCorner, | |||
GrassRoundedCorner, | |||
GrassSlicedCube, | |||
GrassRoundedSlicedCube, | |||
GrassPyramidSegment, | |||
GrassSlope, | |||
GrassRoundedSlope, | |||
DirtConeSegment, | |||
DirtCorner, | |||
DirtRoundedCorner, | |||
DirtSlicedCube, | |||
DirtRoundedSlicedCube, | |||
DirtPyramidSegment, | |||
DirtSlope, | |||
DirtRoundedSlope, | |||
RubberHemisphere, | |||
AluminiumHemisphere, | |||
GrassInnerCornerBulged, | |||
DirtInnerCornerBulged, | |||
IronHemisphere, | |||
OiledHemisphere, | |||
GlassHemisphere, | |||
TyreS, | |||
ThreeWaySwitch, | |||
Dial, //120 | |||
CharacterOnEnterTrigger, //Probably crashes | |||
CharacterOnLeaveTrigger, | |||
CharacterOnStayTrigger, | |||
ObjectOnEnterTrigger, | |||
ObjectOnLeaveTrigger, | |||
ObjectOnStayTrigger, | |||
Button, | |||
Switch, | |||
TextBlock, //Brings up a screen | |||
ConsoleBlock, //Brings up a screen | |||
Door, | |||
GlassDoor, | |||
PoweredDoor, | |||
PoweredGlassDoor, | |||
AluminiumTubeCorner, | |||
IronTubeCorner, | |||
WoodCube, | |||
WoodSlicedCube, | |||
WoodSlope, | |||
WoodCorner, | |||
WoodPyramidSegment, | |||
WoodConeSegment, | |||
WoodRoundedSlicedCube, | |||
WoodRoundedSlope, | |||
WoodRoundedCorner, | |||
WoodCylinder, | |||
WoodHemisphere, | |||
WoodSphere, | |||
BrickCube, //149 | |||
BrickSlicedCube = 151, | |||
BrickSlope, | |||
BrickCorner, | |||
ConcreteCube, | |||
ConcreteSlicedCube, | |||
ConcreteSlope, | |||
ConcreteCorner, | |||
BeachTree1 = 200, | |||
BeachTree2, | |||
BeachTree3, | |||
Rock1, | |||
Rock2, | |||
Rock3, | |||
Rock4, | |||
BirchTree1, | |||
BirchTree2, | |||
BirchTree3, | |||
PineTree1, | |||
PineTree2, | |||
PineTree3, | |||
Flower1, | |||
Flower2, | |||
Flower3, | |||
Shrub1, | |||
Shrub2, | |||
Shrub3 | |||
} | |||
} |
@@ -22,10 +22,10 @@ namespace GamecraftModdingAPI.Blocks | |||
/// <param name="position">The block's position in the grid - default block size is 0.2</param> | |||
/// <param name="rotation">The block's rotation</param> | |||
/// <param name="uscale">The block's uniform scale - default scale is 1 (with 0.2 width)</param> | |||
/// <param name="scale">The block's non-uniform scale - less than 1 means <paramref name="uscale"/> is used</param> | |||
/// <param name="scale">The block's non-uniform scale - 0 means <paramref name="uscale"/> is used</param> | |||
/// <param name="playerId">The player who placed the block</param> | |||
/// <exception cref="Exception"></exception> | |||
public static bool PlaceBlock(ushort block, float3 position, | |||
public static bool PlaceBlock(BlockIDs block, float3 position, | |||
quaternion rotation = new quaternion(), BlockColors color = BlockColors.Default, byte darkness = 0, | |||
int uscale = 1, float3 scale = new float3(), uint playerId = 0) | |||
{ | |||
@@ -52,14 +52,14 @@ namespace GCMC | |||
/// <param name="scale">The block's non-uniform scale - less than 1 means <paramref name="uscale"/> is used</param> | |||
/// <param name="playerId">The player who placed the block</param> | |||
/// <exception cref="Exception"></exception> | |||
public void PlaceBlock(ushort block, BlockColors color, byte darkness, float3 position, int uscale, | |||
public void PlaceBlock(BlockIDs block, BlockColors color, byte darkness, float3 position, int uscale, | |||
float3 scale, uint playerId, quaternion rotation) | |||
{ //It appears that only the non-uniform scale has any visible effect, but if that's not given here it will be set to the uniform one | |||
try | |||
{ | |||
if (darkness > 9) | |||
throw new Exception("That is too dark. Make sure to use 0-9 as darkness. (0 is default.)"); | |||
BuildBlock(block, (byte) (color + darkness * 10), position, uscale, scale, rotation).Init( | |||
BuildBlock((ushort) block, (byte) (color + darkness * 10), position, uscale, scale, rotation).Init( | |||
new BlockPlacementInfoStruct() | |||
{ | |||
loadedFromDisk = false, | |||
@@ -79,12 +79,12 @@ namespace GCMC | |||
throw new Exception("The factory is null."); | |||
if (uscale < 1) | |||
throw new Exception("Scale needs to be at least 1"); | |||
if (scale.x < 1) scale.x = uscale; | |||
if (scale.y < 1) scale.y = uscale; | |||
if (scale.z < 1) scale.z = uscale; | |||
if (scale.x < 4e-5) scale.x = uscale; | |||
if (scale.y < 4e-5) scale.y = uscale; | |||
if (scale.z < 4e-5) scale.z = uscale; | |||
//RobocraftX.CR.MachineEditing.PlaceBlockEngine | |||
ScalingEntityStruct scaling = new ScalingEntityStruct {scale = scale}; | |||
RotationEntityStruct rotation = new RotationEntityStruct {rotation = rot}; | |||
RotationEntityStruct rotation = new RotationEntityStruct {rotation = quaternion.identity}; | |||
GridRotationStruct gridRotation = new GridRotationStruct | |||
{position = float3.zero, rotation = quaternion.identity}; | |||
CubeCategoryStruct category = new CubeCategoryStruct | |||
@@ -135,7 +135,7 @@ namespace GCMC | |||
return structInitializer; | |||
} | |||
public string Name { get; } = "Cube placer engine"; | |||
public string Name { get; } = nameof(PlacementEngine); | |||
[HarmonyPatch] | |||
[UsedImplicitly] | |||