mirror of
https://gitlab.bixilon.de/bixilon/minosoft.git
synced 2025-09-15 02:15:34 -04:00
send position to server
This commit is contained in:
parent
e692620220
commit
f93750dac5
@ -14,6 +14,8 @@ package de.bixilon.minosoft.data.entities
|
|||||||
|
|
||||||
data class EntityRotation(val yaw: Float, val pitch: Float, val headYaw: Float) {
|
data class EntityRotation(val yaw: Float, val pitch: Float, val headYaw: Float) {
|
||||||
|
|
||||||
|
constructor(yaw: Double, pitch: Double) : this(yaw.toFloat(), pitch.toFloat(), yaw.toFloat())
|
||||||
|
|
||||||
override fun toString(): String {
|
override fun toString(): String {
|
||||||
return "(yaw=$yaw, pitch=$pitch, headYaw=$headYaw)"
|
return "(yaw=$yaw, pitch=$pitch, headYaw=$headYaw)"
|
||||||
}
|
}
|
||||||
|
@ -13,10 +13,13 @@
|
|||||||
package de.bixilon.minosoft.data.entities
|
package de.bixilon.minosoft.data.entities
|
||||||
|
|
||||||
import de.bixilon.minosoft.data.world.BlockPosition
|
import de.bixilon.minosoft.data.world.BlockPosition
|
||||||
|
import glm_.vec3.Vec3
|
||||||
|
|
||||||
|
|
||||||
data class Location(val x: Double, val y: Double, val z: Double) {
|
data class Location(val x: Double, val y: Double, val z: Double) {
|
||||||
|
|
||||||
|
constructor(position: Vec3) : this(position.x.toDouble(), position.y.toDouble(), position.z.toDouble())
|
||||||
|
|
||||||
override fun toString(): String {
|
override fun toString(): String {
|
||||||
return "($x $y $z)"
|
return "($x $y $z)"
|
||||||
}
|
}
|
||||||
|
@ -12,11 +12,11 @@ class Camera(private var fov: Float, private val windowId: Long) {
|
|||||||
private var mouseSensitivity = 0.1
|
private var mouseSensitivity = 0.1
|
||||||
private var movementSpeed = 7
|
private var movementSpeed = 7
|
||||||
private var cameraFront = Vec3(0.0f, 0.0f, -1.0f)
|
private var cameraFront = Vec3(0.0f, 0.0f, -1.0f)
|
||||||
private var cameraPosition = Vec3(0.0f, 0.0f, 3.0f)
|
var cameraPosition = Vec3(0.0f, 0.0f, 0.0f)
|
||||||
private var lastMouseX = 0.0
|
private var lastMouseX = 0.0
|
||||||
private var lastMouseY = 0.0
|
private var lastMouseY = 0.0
|
||||||
private var yaw = 0.0
|
var yaw = 0.0
|
||||||
private var pitch = 0.0
|
var pitch = 0.0
|
||||||
|
|
||||||
fun mouseCallback(xPos: Double, yPos: Double) {
|
fun mouseCallback(xPos: Double, yPos: Double) {
|
||||||
var xOffset = xPos - this.lastMouseX
|
var xOffset = xPos - this.lastMouseX
|
||||||
@ -85,10 +85,6 @@ class Camera(private var fov: Float, private val windowId: Long) {
|
|||||||
this.fov = fov
|
this.fov = fov
|
||||||
}
|
}
|
||||||
|
|
||||||
fun setPosition(position: Vec3) {
|
|
||||||
cameraPosition = position
|
|
||||||
}
|
|
||||||
|
|
||||||
fun setRotation(yaw: Double, pitch: Double) {
|
fun setRotation(yaw: Double, pitch: Double) {
|
||||||
cameraFront = Vec3((cos(glm.radians(yaw)) * cos(glm.radians(pitch))).toFloat(), sin(glm.radians(pitch)).toFloat(), (sin(glm.radians(yaw)) * cos(glm.radians(pitch))).toFloat()).normalize()
|
cameraFront = Vec3((cos(glm.radians(yaw)) * cos(glm.radians(pitch))).toFloat(), sin(glm.radians(pitch)).toFloat(), (sin(glm.radians(yaw)) * cos(glm.radians(pitch))).toFloat()).normalize()
|
||||||
}
|
}
|
||||||
|
@ -1,9 +1,12 @@
|
|||||||
package de.bixilon.minosoft.gui.rendering
|
package de.bixilon.minosoft.gui.rendering
|
||||||
|
|
||||||
|
import de.bixilon.minosoft.data.entities.EntityRotation
|
||||||
|
import de.bixilon.minosoft.data.entities.Location
|
||||||
import de.bixilon.minosoft.data.world.ChunkLocation
|
import de.bixilon.minosoft.data.world.ChunkLocation
|
||||||
import de.bixilon.minosoft.gui.rendering.shader.Shader
|
import de.bixilon.minosoft.gui.rendering.shader.Shader
|
||||||
import de.bixilon.minosoft.gui.rendering.textures.TextureArray
|
import de.bixilon.minosoft.gui.rendering.textures.TextureArray
|
||||||
import de.bixilon.minosoft.protocol.network.Connection
|
import de.bixilon.minosoft.protocol.network.Connection
|
||||||
|
import de.bixilon.minosoft.protocol.packets.serverbound.play.PacketPlayerPositionAndRotationSending
|
||||||
import de.bixilon.minosoft.util.CountUpAndDownLatch
|
import de.bixilon.minosoft.util.CountUpAndDownLatch
|
||||||
import org.lwjgl.*
|
import org.lwjgl.*
|
||||||
import org.lwjgl.glfw.Callbacks
|
import org.lwjgl.glfw.Callbacks
|
||||||
@ -135,6 +138,8 @@ class RenderWindow(private val connection: Connection) {
|
|||||||
var lastCalcTime = glfwGetTime()
|
var lastCalcTime = glfwGetTime()
|
||||||
var frameTimeLastCalc = 0.0
|
var frameTimeLastCalc = 0.0
|
||||||
|
|
||||||
|
var lastPositionChangeTime = 0.0
|
||||||
|
|
||||||
while (!glfwWindowShouldClose(windowId)) {
|
while (!glfwWindowShouldClose(windowId)) {
|
||||||
glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT) // clear the framebuffer
|
glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT) // clear the framebuffer
|
||||||
|
|
||||||
@ -171,6 +176,11 @@ class RenderWindow(private val connection: Connection) {
|
|||||||
}
|
}
|
||||||
framesLastSecond++
|
framesLastSecond++
|
||||||
|
|
||||||
|
if (glfwGetTime() - lastPositionChangeTime > 0.05) {
|
||||||
|
// ToDo: Replace this with proper movement and only send it, when out position changed
|
||||||
|
connection.sendPacket(PacketPlayerPositionAndRotationSending(Location(camera.cameraPosition), EntityRotation(camera.yaw, camera.pitch), false))
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
for (renderQueueElement in renderQueue) {
|
for (renderQueueElement in renderQueue) {
|
||||||
renderQueueElement.run()
|
renderQueueElement.run()
|
||||||
|
@ -64,7 +64,7 @@ class Renderer(private val connection: Connection) {
|
|||||||
|
|
||||||
fun teleport(position: Location) {
|
fun teleport(position: Location) {
|
||||||
renderWindow.renderQueue.add {
|
renderWindow.renderQueue.add {
|
||||||
renderWindow.camera.setPosition(Vec3(position.x, position.y, position.z))
|
renderWindow.camera.cameraPosition = Vec3(position.x, position.y, position.z)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user