fixed bugs, now im hoping for 1.0
This commit is contained in:
@@ -50,7 +50,15 @@ class Bde_particlesClient : ClientModInitializer {
|
|||||||
})
|
})
|
||||||
|
|
||||||
ServerLifecycleEvents.SERVER_STARTED.register(ServerLifecycleEvents.ServerStarted { _ ->
|
ServerLifecycleEvents.SERVER_STARTED.register(ServerLifecycleEvents.ServerStarted { _ ->
|
||||||
println("BDE_ParticleSys - Progress bar filled :3")
|
println("BPS - Progress bar filled :3")
|
||||||
|
println(
|
||||||
|
"\n____________ _____ _____ \n" +
|
||||||
|
"| ___ \\ ___ \\/ ___| _ |____ |\n" +
|
||||||
|
"| |_/ / |_/ /\\ `--. (_) / /\n" +
|
||||||
|
"| ___ \\ __/ `--. \\ \\ \\\n" +
|
||||||
|
"| |_/ / | /\\__/ / _ .___/ /\n" +
|
||||||
|
"\\____/\\_| \\____/ (_) \\____/ \n"
|
||||||
|
)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -61,7 +61,15 @@ class Bde_particles : ModInitializer {
|
|||||||
})
|
})
|
||||||
|
|
||||||
ServerLifecycleEvents.SERVER_STARTED.register(ServerLifecycleEvents.ServerStarted { _ ->
|
ServerLifecycleEvents.SERVER_STARTED.register(ServerLifecycleEvents.ServerStarted { _ ->
|
||||||
println("BDE_ParticleSys - Progress bar filled :3")
|
println("BPS - Progress bar filled :3")
|
||||||
|
println(
|
||||||
|
"\n____________ _____ _____ \n" +
|
||||||
|
"| ___ \\ ___ \\/ ___| _ |____ |\n" +
|
||||||
|
"| |_/ / |_/ /\\ `--. (_) / /\n" +
|
||||||
|
"| ___ \\ __/ `--. \\ \\ \\\n" +
|
||||||
|
"| |_/ / | /\\__/ / _ .___/ /\n" +
|
||||||
|
"\\____/\\_| \\____/ (_) \\____/ \n"
|
||||||
|
)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -70,6 +78,7 @@ class Bde_particles : ModInitializer {
|
|||||||
fun init() {
|
fun init() {
|
||||||
addToEmitterRegister("DEFAULT", EmitterParams.DEFAULT)
|
addToEmitterRegister("DEFAULT", EmitterParams.DEFAULT)
|
||||||
addToEmitterRegister("FIRE_GEYSER", EmitterParams.FIRE_GEYSER)
|
addToEmitterRegister("FIRE_GEYSER", EmitterParams.FIRE_GEYSER)
|
||||||
|
addToEmitterRegister("RING_EXPLOSION", EmitterParams.RING_EXPLOSION)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -98,7 +107,7 @@ fun tick(server: MinecraftServer) {
|
|||||||
fun onRightClick(player: PlayerEntity, world: ServerWorld, hand: Hand) : TypedActionResult<ItemStack> {
|
fun onRightClick(player: PlayerEntity, world: ServerWorld, hand: Hand) : TypedActionResult<ItemStack> {
|
||||||
val handItem = player.getStackInHand(hand)
|
val handItem = player.getStackInHand(hand)
|
||||||
val (isEmitterTool, emitterId) = ParticleEmitterTool.getToolDetails(handItem)
|
val (isEmitterTool, emitterId) = ParticleEmitterTool.getToolDetails(handItem)
|
||||||
val hitResult = raycastFromPlayer(player as ServerPlayerEntity, 50.0)
|
val hitResult = raycastFromPlayer(player as ServerPlayerEntity, 200.0)
|
||||||
val emitterParams = getEmitterParams(emitterId)
|
val emitterParams = getEmitterParams(emitterId)
|
||||||
|
|
||||||
if (
|
if (
|
||||||
|
|||||||
@@ -45,7 +45,6 @@ fun updateEmitterParam(context: CommandContext<ServerCommandSource>, paramName:
|
|||||||
|
|
||||||
fun updateParticleParam(context: CommandContext<ServerCommandSource>, paramName: String, typeValue: Any) : MutableText {
|
fun updateParticleParam(context: CommandContext<ServerCommandSource>, paramName: String, typeValue: Any) : MutableText {
|
||||||
val emitterIdVal = StringArgumentType.getString(context, "Registered Emitter ID")
|
val emitterIdVal = StringArgumentType.getString(context, "Registered Emitter ID")
|
||||||
val particle = getEmitterParams(emitterIdVal)?.particle
|
|
||||||
val success = updateSingleParticleParam(emitterIdVal, paramName, typeValue)
|
val success = updateSingleParticleParam(emitterIdVal, paramName, typeValue)
|
||||||
|
|
||||||
val feedback = if (success) {
|
val feedback = if (success) {
|
||||||
@@ -173,6 +172,13 @@ class ArgConfigParticleKeys {
|
|||||||
}
|
}
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
.then(CommandManager.literal("point")
|
||||||
|
.executes { context ->
|
||||||
|
val feedback = updateParticleParam(context, "shape", SpawningShape.POINT)
|
||||||
|
context.source.sendFeedback( { feedback }, false)
|
||||||
|
Command.SINGLE_SUCCESS
|
||||||
|
}
|
||||||
|
)
|
||||||
}
|
}
|
||||||
fun blockCurve() : LiteralArgumentBuilder<ServerCommandSource> {
|
fun blockCurve() : LiteralArgumentBuilder<ServerCommandSource> {
|
||||||
return CommandManager.literal("blockCurve")
|
return CommandManager.literal("blockCurve")
|
||||||
@@ -443,13 +449,15 @@ fun argAddForceField() : LiteralArgumentBuilder<ServerCommandSource> {
|
|||||||
.then(CommandManager.argument("X Pos", FloatArgumentType.floatArg())
|
.then(CommandManager.argument("X Pos", FloatArgumentType.floatArg())
|
||||||
.then(CommandManager.argument("Y Pos", FloatArgumentType.floatArg())
|
.then(CommandManager.argument("Y Pos", FloatArgumentType.floatArg())
|
||||||
.then(CommandManager.argument("Z Pos", FloatArgumentType.floatArg())
|
.then(CommandManager.argument("Z Pos", FloatArgumentType.floatArg())
|
||||||
.then(CommandManager.argument("Min Force", FloatArgumentType.floatArg())
|
|
||||||
.then(CommandManager.argument("Max Force", FloatArgumentType.floatArg())
|
|
||||||
.then(CommandManager.literal("sphere")
|
.then(CommandManager.literal("sphere")
|
||||||
.then(CommandManager.argument("Radius", FloatArgumentType.floatArg())
|
.then(CommandManager.argument("Radius", FloatArgumentType.floatArg())
|
||||||
|
.then(CommandManager.argument("Min Force", FloatArgumentType.floatArg())
|
||||||
|
.then(CommandManager.argument("Max Force", FloatArgumentType.floatArg())
|
||||||
.executes { context -> forceFieldAddSphereExec(context) }
|
.executes { context -> forceFieldAddSphereExec(context) }
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
.then(CommandManager.literal("cube")
|
.then(CommandManager.literal("cube")
|
||||||
.then(CommandManager.argument("X Size", FloatArgumentType.floatArg())
|
.then(CommandManager.argument("X Size", FloatArgumentType.floatArg())
|
||||||
.then(CommandManager.argument("Y Size", FloatArgumentType.floatArg())
|
.then(CommandManager.argument("Y Size", FloatArgumentType.floatArg())
|
||||||
@@ -469,12 +477,10 @@ fun argAddForceField() : LiteralArgumentBuilder<ServerCommandSource> {
|
|||||||
)
|
)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
)
|
|
||||||
)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
fun argRemoveForceField() : LiteralArgumentBuilder<ServerCommandSource> {
|
fun argRemoveForceField() : LiteralArgumentBuilder<ServerCommandSource> { // TODO fix this error somehow
|
||||||
return CommandManager.literal("remove")
|
return CommandManager.literal("remove")
|
||||||
.then(CommandManager.argument("Force Field Name", StringArgumentType.string())
|
.then(CommandManager.argument("Force Field Name", StringArgumentType.string())
|
||||||
.suggests { context, builder ->
|
.suggests { context, builder ->
|
||||||
@@ -483,8 +489,8 @@ fun argRemoveForceField() : LiteralArgumentBuilder<ServerCommandSource> {
|
|||||||
val params = getEmitterParams(emitterIdVal)
|
val params = getEmitterParams(emitterIdVal)
|
||||||
val forceFields = params!!.particle.forceFields
|
val forceFields = params!!.particle.forceFields
|
||||||
|
|
||||||
forceFields.iterator().forEach {
|
for (forceField in forceFields) {
|
||||||
builder.suggest(it.name)
|
builder.suggest(forceField.name)
|
||||||
}
|
}
|
||||||
|
|
||||||
CompletableFuture.completedFuture(builder.build())
|
CompletableFuture.completedFuture(builder.build())
|
||||||
@@ -497,20 +503,30 @@ fun argRemoveForceField() : LiteralArgumentBuilder<ServerCommandSource> {
|
|||||||
val forceFields = params!!.particle.forceFields
|
val forceFields = params!!.particle.forceFields
|
||||||
val newForceFields: MutableList<ForceField> = forceFields.toMutableList()
|
val newForceFields: MutableList<ForceField> = forceFields.toMutableList()
|
||||||
|
|
||||||
|
if (forceFields.isEmpty()) {
|
||||||
|
val feedback = Text.literal("BPS - There are no force fields for Emitter ID \"$emitterIdVal\".")
|
||||||
|
.setStyle(Style.EMPTY.withColor(Color(200, 0, 0).rgb))
|
||||||
|
context.source.sendFeedback({ feedback }, false)
|
||||||
|
Command.SINGLE_SUCCESS
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
else {
|
||||||
for (forceField in forceFields) {
|
for (forceField in forceFields) {
|
||||||
if (forceField.name == ffName) {
|
if (forceField.name == ffName) {
|
||||||
newForceFields.remove(forceField)
|
newForceFields.apply { remove(forceField) }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
val feedback = updateParticleParam(
|
val feedback = updateParticleParam(
|
||||||
context,
|
context,
|
||||||
"forceFields",
|
"forceFields",
|
||||||
newForceFields
|
newForceFields.toTypedArray()
|
||||||
)
|
)
|
||||||
context.source.sendFeedback({ feedback }, false)
|
context.source.sendFeedback({ feedback }, false)
|
||||||
Command.SINGLE_SUCCESS
|
Command.SINGLE_SUCCESS
|
||||||
}
|
}
|
||||||
|
}
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -527,11 +543,12 @@ fun forceFieldAddSphereExec(context: CommandContext<ServerCommandSource>) : Int
|
|||||||
|
|
||||||
val currentParams = getEmitterParams(emitterIdVal)
|
val currentParams = getEmitterParams(emitterIdVal)
|
||||||
val forceFields = currentParams!!.particle.forceFields
|
val forceFields = currentParams!!.particle.forceFields
|
||||||
|
val addedArray = forceFields.toMutableList().apply { add(forceField) }.toTypedArray()
|
||||||
|
|
||||||
val feedback = updateParticleParam(
|
val feedback = updateParticleParam(
|
||||||
context,
|
context,
|
||||||
"forceFields",
|
"forceFields",
|
||||||
forceFields.toMutableList().add(forceField)
|
addedArray
|
||||||
)
|
)
|
||||||
|
|
||||||
context.source.sendFeedback({ feedback }, false)
|
context.source.sendFeedback({ feedback }, false)
|
||||||
@@ -555,11 +572,13 @@ fun forceFieldAddCubeExec(context: CommandContext<ServerCommandSource>) : Int {
|
|||||||
|
|
||||||
val currentParams = getEmitterParams(emitterIdVal)
|
val currentParams = getEmitterParams(emitterIdVal)
|
||||||
val forceFields = currentParams!!.particle.forceFields
|
val forceFields = currentParams!!.particle.forceFields
|
||||||
|
val addedArray = forceFields.toMutableList().apply { add(forceField) }.toTypedArray()
|
||||||
|
|
||||||
|
|
||||||
val feedback = updateParticleParam(
|
val feedback = updateParticleParam(
|
||||||
context,
|
context,
|
||||||
"forceFields",
|
"forceFields",
|
||||||
forceFields.toMutableList().add(forceField)
|
addedArray
|
||||||
)
|
)
|
||||||
|
|
||||||
context.source.sendFeedback({ feedback }, false)
|
context.source.sendFeedback({ feedback }, false)
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ data class EmitterParams (
|
|||||||
var loopDur: Int = 25,
|
var loopDur: Int = 25,
|
||||||
var loopDelay: Int = 0,
|
var loopDelay: Int = 0,
|
||||||
var loopCount: Int = 0,
|
var loopCount: Int = 0,
|
||||||
var particle: ParticleParams = ParticleParams(),
|
var particle: ParticleParams = ParticleParams.DEFAULT,
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
companion object Presets {
|
companion object Presets {
|
||||||
@@ -30,5 +30,13 @@ data class EmitterParams (
|
|||||||
0,
|
0,
|
||||||
ParticleParams.FIRE_GEYSER
|
ParticleParams.FIRE_GEYSER
|
||||||
)
|
)
|
||||||
|
val RING_EXPLOSION = EmitterParams(
|
||||||
|
200,
|
||||||
|
150,
|
||||||
|
1,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
ParticleParams.RING_EXPLOSION
|
||||||
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -8,6 +8,9 @@ import org.joml.Vector4f
|
|||||||
import kotlin.math.*
|
import kotlin.math.*
|
||||||
|
|
||||||
|
|
||||||
|
// TODO: consider moving most params to emitter (such as shape, and forceFields) to store less data
|
||||||
|
|
||||||
|
|
||||||
class Particle(private val particleParams: ParticleParams) {
|
class Particle(private val particleParams: ParticleParams) {
|
||||||
private val initOffset = Vector3f(-0.5f, -0.5f, -0.5f)
|
private val initOffset = Vector3f(-0.5f, -0.5f, -0.5f)
|
||||||
private var offset = Vector3f(0.0f, 0.0f, 0.0f)
|
private var offset = Vector3f(0.0f, 0.0f, 0.0f)
|
||||||
@@ -41,27 +44,11 @@ class Particle(private val particleParams: ParticleParams) {
|
|||||||
val newSpawnPos: Vector3f
|
val newSpawnPos: Vector3f
|
||||||
|
|
||||||
when (shape) {
|
when (shape) {
|
||||||
is SpawningShape.CIRCLE -> {
|
is SpawningShape.CIRCLE -> { val posInCircle = randomInCircle(shape.radius); newSpawnPos = Vector3f(posInCircle.x, 0.0f, posInCircle.y) }
|
||||||
val posInCircle = randomInCircle(shape.radius)
|
is SpawningShape.SPHERE -> { newSpawnPos = randomInSphere(shape.radius) }
|
||||||
newSpawnPos = Vector3f(posInCircle.x, 0.0f, posInCircle.y)
|
is SpawningShape.RECT -> { val posInRect = randomInRect(shape.size); newSpawnPos = Vector3f(posInRect.x, 0.0f, posInRect.y) }
|
||||||
}
|
is SpawningShape.CUBE -> { newSpawnPos = randomInCube(shape.size) }
|
||||||
|
is SpawningShape.POINT -> { newSpawnPos = Vector3f(0.0f, 0.0f, 0.0f) }
|
||||||
is SpawningShape.SPHERE -> {
|
|
||||||
newSpawnPos = randomInSphere(shape.radius)
|
|
||||||
}
|
|
||||||
|
|
||||||
is SpawningShape.RECT -> {
|
|
||||||
val posInRect = randomInRect(shape.size)
|
|
||||||
newSpawnPos = Vector3f(posInRect.x, 0.0f, posInRect.y)
|
|
||||||
}
|
|
||||||
|
|
||||||
is SpawningShape.CUBE -> {
|
|
||||||
newSpawnPos = randomInCube(shape.size)
|
|
||||||
}
|
|
||||||
|
|
||||||
null -> {
|
|
||||||
newSpawnPos = Vector3f(0.0f, 0.0f, 0.0f)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
offset = newSpawnPos
|
offset = newSpawnPos
|
||||||
@@ -115,7 +102,6 @@ class Particle(private val particleParams: ParticleParams) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// TODO: forceFields
|
|
||||||
private fun calcNewProperties() : DisplayEntityProperties {
|
private fun calcNewProperties() : DisplayEntityProperties {
|
||||||
|
|
||||||
fun calcBlockCurve(timeAliveClamped: Float) : String {
|
fun calcBlockCurve(timeAliveClamped: Float) : String {
|
||||||
@@ -130,7 +116,8 @@ class Particle(private val particleParams: ParticleParams) {
|
|||||||
val sdfVal = sdfSphere(forceField.pos, shape.radius, offset)
|
val sdfVal = sdfSphere(forceField.pos, shape.radius, offset)
|
||||||
val normalizedSdf = normalizeSdf(sdfVal, shape.radius)
|
val normalizedSdf = normalizeSdf(sdfVal, shape.radius)
|
||||||
val velDir = Vector3f(offset).sub(forceField.pos).normalize()
|
val velDir = Vector3f(offset).sub(forceField.pos).normalize()
|
||||||
val velMul = lerp(shape.force.second, shape.force.second, 1 - normalizedSdf)
|
val velMul = if (sdfVal > 0) { 0.0f }
|
||||||
|
else { lerp(shape.force.second, shape.force.second, 1 - normalizedSdf) }
|
||||||
|
|
||||||
return velDir.mul(velMul)
|
return velDir.mul(velMul)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -113,7 +113,7 @@ fun updateSingleParticleParam(params: ParticleParams, paramName: String, paramVa
|
|||||||
val newParams = params.copy()
|
val newParams = params.copy()
|
||||||
|
|
||||||
when (paramName) {
|
when (paramName) {
|
||||||
"shape" -> newParams.shape = value as SpawningShape?
|
"shape" -> newParams.shape = value as SpawningShape
|
||||||
"blockCurve" -> newParams.blockCurve = value as Array<String>
|
"blockCurve" -> newParams.blockCurve = value as Array<String>
|
||||||
"rotRandom" -> newParams.rotRandom = value as Pair<Vector3f, Vector3f>
|
"rotRandom" -> newParams.rotRandom = value as Pair<Vector3f, Vector3f>
|
||||||
"rotVelRandom" -> newParams.rotVelRandom = value as Pair<Vector3f, Vector3f>
|
"rotVelRandom" -> newParams.rotVelRandom = value as Pair<Vector3f, Vector3f>
|
||||||
|
|||||||
@@ -22,14 +22,14 @@ import org.joml.Vector3f
|
|||||||
* @param sizeCurve A curve which the size gets multiplied by during the particle's lifetime.
|
* @param sizeCurve A curve which the size gets multiplied by during the particle's lifetime.
|
||||||
*/
|
*/
|
||||||
data class ParticleParams (
|
data class ParticleParams (
|
||||||
var shape: SpawningShape? = SpawningShape.CIRCLE(3.0f),
|
var shape: SpawningShape = SpawningShape.CIRCLE(3.0f),
|
||||||
var blockCurve: Array<String> = arrayOf("minecraft:shroomlight", "minecraft:orange_concrete", "minecraft:orange_stained_glass", "minecraft:gray_stained_glass", "minecraft:light_gray_stained_glass"),
|
var blockCurve: Array<String> = arrayOf("minecraft:purple_concrete", "minecraft:purple_stained_glass"),
|
||||||
var rotRandom: Pair<Vector3f, Vector3f> = Pair(Vector3f(0.0f, 0.0f, 0.0f), Vector3f(360.0f, 360.0f, 360.0f)),
|
var rotRandom: Pair<Vector3f, Vector3f> = Pair(Vector3f(0.0f, 0.0f, 0.0f), Vector3f(360.0f, 360.0f, 360.0f)),
|
||||||
var rotVelRandom: Pair<Vector3f, Vector3f> = Pair(Vector3f(-0.2f, -0.2f, -0.2f), Vector3f(0.2f, 0.2f, 0.2f)),
|
var rotVelRandom: Pair<Vector3f, Vector3f> = Pair(Vector3f(-0.2f, -0.2f, -0.2f), Vector3f(0.2f, 0.2f, 0.2f)),
|
||||||
var sizeRandom: Pair<Vector3f, Vector3f> = Pair(Vector3f(0.5f, 0.5f, 0.5f), Vector3f(1.0f, 1.0f, 1.0f)),
|
var sizeRandom: Pair<Vector3f, Vector3f> = Pair(Vector3f(0.5f, 0.5f, 0.5f), Vector3f(1.0f, 1.0f, 1.0f)),
|
||||||
var uniformSize: Boolean = true,
|
var uniformSize: Boolean = true,
|
||||||
var velRandom: Pair<Vector3f, Vector3f> = Pair(Vector3f(-0.1f, 0.4f, -0.1f), Vector3f(0.1f, 0.8f, 0.1f)),
|
var velRandom: Pair<Vector3f, Vector3f> = Pair(Vector3f(-0.1f, 0.3f, -0.1f), Vector3f(0.1f, 0.6f, 0.1f)),
|
||||||
var forceFields: Array<ForceField> = arrayOf(ForceField()),
|
var forceFields: Array<ForceField> = emptyArray(),
|
||||||
var gravity: Vector3f = Vector3f(0.0f, -0.01f, 0.0f),
|
var gravity: Vector3f = Vector3f(0.0f, -0.01f, 0.0f),
|
||||||
var drag: Float = 0.075f,
|
var drag: Float = 0.075f,
|
||||||
var minVel: Float = 0.0f,
|
var minVel: Float = 0.0f,
|
||||||
@@ -40,7 +40,7 @@ data class ParticleParams (
|
|||||||
companion object Presets {
|
companion object Presets {
|
||||||
val DEFAULT = ParticleParams()
|
val DEFAULT = ParticleParams()
|
||||||
val FIRE_GEYSER = ParticleParams(
|
val FIRE_GEYSER = ParticleParams(
|
||||||
null,
|
SpawningShape.POINT,
|
||||||
arrayOf("minecraft:shroomlight", "minecraft:orange_concrete", "minecraft:orange_stained_glass", "minecraft:gray_stained_glass", "minecraft:light_gray_stained_glass"),
|
arrayOf("minecraft:shroomlight", "minecraft:orange_concrete", "minecraft:orange_stained_glass", "minecraft:gray_stained_glass", "minecraft:light_gray_stained_glass"),
|
||||||
Pair(Vector3f(0.0f, 0.0f, 0.0f), Vector3f(360.0f, 360.0f, 360.0f)),
|
Pair(Vector3f(0.0f, 0.0f, 0.0f), Vector3f(360.0f, 360.0f, 360.0f)),
|
||||||
Pair(Vector3f(-0.2f, -0.2f, -0.2f), Vector3f(0.2f, 0.2f, 0.2f)),
|
Pair(Vector3f(-0.2f, -0.2f, -0.2f), Vector3f(0.2f, 0.2f, 0.2f)),
|
||||||
@@ -55,5 +55,21 @@ data class ParticleParams (
|
|||||||
Triple(Vector3f(1.0f, 1.0f, 1.0f), Vector3f(0.0f, 0.0f, 0.0f), InterpolationCurves.SQRT),
|
Triple(Vector3f(1.0f, 1.0f, 1.0f), Vector3f(0.0f, 0.0f, 0.0f), InterpolationCurves.SQRT),
|
||||||
Triple(Vector3f(1.0f, 1.0f, 1.0f), Vector3f(0.5f, 0.5f, 0.5f), InterpolationCurves.SQRT)
|
Triple(Vector3f(1.0f, 1.0f, 1.0f), Vector3f(0.5f, 0.5f, 0.5f), InterpolationCurves.SQRT)
|
||||||
)
|
)
|
||||||
|
val RING_EXPLOSION = ParticleParams(
|
||||||
|
SpawningShape.CIRCLE(0.1f),
|
||||||
|
arrayOf("minecraft:shroomlight", "minecraft:orange_concrete", "minecraft:orange_stained_glass", "minecraft:gray_stained_glass", "minecraft:light_gray_stained_glass"),
|
||||||
|
Pair(Vector3f(0.0f, 0.0f, 0.0f), Vector3f(360.0f, 360.0f, 360.0f)),
|
||||||
|
Pair(Vector3f(-0.2f, -0.2f, -0.2f), Vector3f(0.2f, 0.2f, 0.2f)),
|
||||||
|
Pair(Vector3f(10.0f, 10.0f, 10.0f), Vector3f(15.0f, 15.0f, 15.0f)),
|
||||||
|
true,
|
||||||
|
Pair(Vector3f(0.0f, 0.0f, 0.0f), Vector3f(0.0f, 0.0f, 0.0f)),
|
||||||
|
arrayOf(ForceField("init", Vector3f(0.0f, -0.0001f, 0.0f), ForceFieldShape.SPHERE(0.1f, Pair(4.0f, 4.0f)))),
|
||||||
|
Vector3f(0.0f, 0.0f, 0.0f),
|
||||||
|
0.0075f,
|
||||||
|
0.0f,
|
||||||
|
Pair(50, 100),
|
||||||
|
Triple(Vector3f(1.0f, 1.0f, 1.0f), Vector3f(0.0f, 0.0f, 0.0f), InterpolationCurves.SQRT),
|
||||||
|
Triple(Vector3f(0.0f, 0.0f, 0.0f), Vector3f(3.0f, 3.0f, 3.0f), InterpolationCurves.SQRT)
|
||||||
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -8,6 +8,7 @@ sealed class SpawningShape {
|
|||||||
data class RECT (val size: Vector2f = Vector2f(1.0f, 1.0f)) : SpawningShape()
|
data class RECT (val size: Vector2f = Vector2f(1.0f, 1.0f)) : SpawningShape()
|
||||||
data class CUBE (val size: Vector3f = Vector3f(1.0f, 1.0f, 1.0f)) : SpawningShape()
|
data class CUBE (val size: Vector3f = Vector3f(1.0f, 1.0f, 1.0f)) : SpawningShape()
|
||||||
data class SPHERE(val radius: Float = 1.0f) : SpawningShape()
|
data class SPHERE(val radius: Float = 1.0f) : SpawningShape()
|
||||||
|
data object POINT : SpawningShape()
|
||||||
}
|
}
|
||||||
|
|
||||||
sealed class ForceFieldShape {
|
sealed class ForceFieldShape {
|
||||||
|
|||||||
Reference in New Issue
Block a user