mirror of https://github.com/teverse/teverse
Compare commits
4 Commits
279552d399
...
57fdb64a08
Author | SHA1 | Date |
---|---|---|
Sanjay Bhadra | 57fdb64a08 | |
Sanjay Bhadra | ca16ccbd55 | |
Jay | 376831e2bb | |
Teverse | 068b85d5f3 |
|
@ -18,7 +18,7 @@ For those that have contributed, we thank you for your time and service to make
|
|||
|
||||
# Copyright
|
||||
|
||||
Copyright (c) 2020 teverse.com
|
||||
Copyright (c) 2020 [teverse.com](https://teverse.com/)
|
||||
|
||||
# Acknowledgements
|
||||
- sound/click.ogg sourced from http://soundbible.com/1705-Click2.html
|
||||
|
|
|
@ -0,0 +1,130 @@
|
|||
-- Copyright 2020- Teverse
|
||||
-- This script constructs (or builds) the default in-game chat system on the client
|
||||
|
||||
local globals = require("tevgit:workshop/library/globals.lua") -- globals; variables or instances that can be shared between files
|
||||
|
||||
-- Load the networking debug UI from the teverse/teverse github
|
||||
--local debugContainer = require("tevgit:utilities/networkDebug.lua")()
|
||||
--debugContainer.parent = teverse.interface
|
||||
|
||||
local clientLocal = teverse.networking.localClient
|
||||
|
||||
local chatContainer = teverse.construct("guiFrame", {
|
||||
parent = teverse.interface,
|
||||
size = guiCoord(0, 300, 0, 200),
|
||||
position = guiCoord(0, 0, 0, 0),
|
||||
backgroundColour = globals.defaultColours.white,
|
||||
backgroundAlpha = 0.3,
|
||||
clip = true,
|
||||
visible = false
|
||||
})
|
||||
|
||||
local chatInputField = teverse.construct("guiTextBox", {
|
||||
parent = teverse.interface,
|
||||
size = guiCoord(1, 0, 0, 20),
|
||||
position = guiCoord(0, 0, 0.9, 0),
|
||||
textAlign = "middleLeft",
|
||||
textSize = 16,
|
||||
text = " Click to chat",
|
||||
textColour = globals.defaultColours.black,
|
||||
backgroundColour = globals.defaultColours.white,
|
||||
backgroundAlpha = 0.3,
|
||||
textEditable = true,
|
||||
textMultiline = false,
|
||||
visible = false
|
||||
})
|
||||
|
||||
|
||||
function chatShift()
|
||||
if #chatContainer.children == 0 then return end
|
||||
for _, message in pairs(chatContainer.children) do
|
||||
message.position = message.position + guiCoord(0, 0, 0, -15)
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
function message(client, text)
|
||||
|
||||
-- Should add a pcall here to determine if the message was sent successfully
|
||||
-- If not, display that the message was never sent
|
||||
teverse.networking:sendToServer("chat", text)
|
||||
|
||||
local Message = teverse.construct("guiFrame", {
|
||||
parent = chatContainer,
|
||||
size = guiCoord(1, 0, 0, 15),
|
||||
position = guiCoord(0, 0, 0, 185),
|
||||
backgroundColour = globals.defaultColours.white,
|
||||
backgroundAlpha = 0
|
||||
})
|
||||
|
||||
teverse.construct("guiTextBox", {
|
||||
parent = Message,
|
||||
size = guiCoord(1, 0, 1, 0),
|
||||
position = guiCoord(0, 0, 0, 0),
|
||||
textSize = 16,
|
||||
text = "["..client.name.."] "..text,
|
||||
backgroundColour = globals.defaultColours.white,
|
||||
backgroundAlpha = 0,
|
||||
textColour = globals.defaultColours.black,
|
||||
textAlign = enums.align.middleLeft
|
||||
})
|
||||
end
|
||||
|
||||
|
||||
function serverMessage(client, message, color)
|
||||
local joinMessage = teverse.construct("guiFrame", {
|
||||
parent = chatContainer,
|
||||
size = guiCoord(1, 0, 0, 15),
|
||||
position = guiCoord(0, 0, 0, 185),
|
||||
backgroundColour = globals.defaultColours.white,
|
||||
backgroundAlpha = 0
|
||||
})
|
||||
|
||||
teverse.construct("guiTextBox", {
|
||||
parent = joinMessage,
|
||||
size = guiCoord(1, 0, 1, 0),
|
||||
position = guiCoord(0, 0, 0, 0),
|
||||
textSize = 16,
|
||||
text = "[SERVER] "..client.name..message,
|
||||
backgroundColour = globals.defaultColours.white,
|
||||
backgroundAlpha = 0,
|
||||
textColour = color,
|
||||
textAlign = enums.align.middleLeft
|
||||
})
|
||||
end
|
||||
|
||||
function clientAddMessage(client, text)
|
||||
chatShift()
|
||||
message(client, text)
|
||||
end
|
||||
|
||||
-- On the fence about this, will reconsider.
|
||||
--function clientRemoveMessage() end
|
||||
|
||||
chatInputField:on("keyDown", function(key)
|
||||
if key == "KEY_RETURN" then
|
||||
chatContainer.visible = true
|
||||
clientAddMessage(clientLocal, chatInputField.text)
|
||||
chatInputField.text = " "
|
||||
sleep(10)
|
||||
chatContainer.visible = false
|
||||
chatInputField.visible = false
|
||||
end
|
||||
end)
|
||||
|
||||
chatInputField:on("mouseLeftDown", function(position)
|
||||
chatInputField.text = " "
|
||||
end)
|
||||
|
||||
teverse.input:on("keyDown", function(key)
|
||||
if key == "KEY_SLASH" then
|
||||
chatInputField.visible = true
|
||||
end
|
||||
end)
|
||||
|
||||
-- Networking Events
|
||||
teverse.networking:on("ChatMessage", message)
|
||||
teverse.networking:on("_clientConnected", function(client) serverMessage(client, " has joined the server.", globals.defaultColours.green) end)
|
||||
teverse.networking:on("_clientDisconnected", function(client) serverMessage(client, " has left the server.", globals.defaultColours.red) end)
|
||||
teverse.networking:on("_disconnected", function(client) serverMessage(client, " has disconnected from the server.", globals.defaultColours.yellow) end)
|
||||
teverse.networking:on("_connected", function(client) serverMessage(client, " has connected to the server.", globals.defaultColours.yellow) end)
|
|
@ -0,0 +1,17 @@
|
|||
{
|
||||
"schema": 1,
|
||||
"id": "ChatSystem",
|
||||
"networked": true,
|
||||
"version": "0.0.1",
|
||||
"permissions": {
|
||||
"client": {
|
||||
"networking": true,
|
||||
"interface": true,
|
||||
"construct": true,
|
||||
"input": true
|
||||
},
|
||||
"server": {
|
||||
"networking": true
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,16 @@
|
|||
-- Copyright 2020- Teverse
|
||||
-- This script constructs (or builds) the default in-game chat system on the server
|
||||
|
||||
teverse.networking:on("ChatMessage", function(client, message)
|
||||
teverse.networking:broadcast("ChatMessage", client, message)
|
||||
end)
|
||||
|
||||
--[[
|
||||
teverse.networking:on("_clientConnected", function(client)
|
||||
teverse.networking:broadcast("ChatClientAdd", "Server", client.name .. " joined the chat")
|
||||
end)
|
||||
|
||||
teverse.networking:on("_clientDisconnected", function(client)
|
||||
teverse.networking:broadcast("ChatClientRemoved", "Server", client.name .. " left the chat")
|
||||
end)
|
||||
]]--
|
|
@ -0,0 +1,12 @@
|
|||
$input v_normal, v_colour, v_position, v_pbr
|
||||
|
||||
#include <teverse.sh>
|
||||
|
||||
uniform vec4 uniformCameraPosition;
|
||||
|
||||
void main()
|
||||
{
|
||||
gl_FragData[0] = vec4(v_colour.xyz, v_pbr.x);
|
||||
gl_FragData[1] = vec4(v_normal, v_pbr.y);
|
||||
//gl_FragData[2] = vec4(v_position, 0.0);
|
||||
}
|
|
@ -0,0 +1,10 @@
|
|||
vec3 v_view : TEXCOORD1 = vec3(0.0, 0.0, 0.0);
|
||||
vec3 v_position : TEXCOORD2 = vec3(0.0, 0.0, 0.0);
|
||||
vec4 v_colour : TEXCOORD3 = vec4(0.0, 0.0, 0.0, 0.0);
|
||||
vec4 v_pbr : TEXCOORD4 = vec4(0.0, 0.0, 0.0, 0.0);
|
||||
vec3 v_normal : NORMAL = vec3(0.0, 0.0, 1.0);
|
||||
|
||||
vec3 a_position : POSITION;
|
||||
vec4 a_normal : NORMAL;
|
||||
vec4 a_weight : BLENDWEIGHT;
|
||||
vec4 a_indices : BLENDINDICES;
|
|
@ -0,0 +1,34 @@
|
|||
$input a_position, a_normal, a_weight, a_indices
|
||||
$output v_normal, v_colour, v_position, v_pbr
|
||||
|
||||
#include <teverse.sh>
|
||||
#include <teverse_compute.sh>
|
||||
|
||||
uniform mat3 normalMatrix;
|
||||
uniform vec4 colour;
|
||||
uniform vec4 pbr;
|
||||
uniform mat4 jointMatrix[90];
|
||||
|
||||
void main()
|
||||
{
|
||||
// metalness, roughness, 0, 0
|
||||
v_pbr = pbr;
|
||||
|
||||
mat4 model = (
|
||||
a_weight.x * jointMatrix[int(a_indices.x)] +
|
||||
a_weight.y * jointMatrix[int(a_indices.y)] +
|
||||
a_weight.z * jointMatrix[int(a_indices.z)] +
|
||||
a_weight.w * jointMatrix[int(a_indices.w)]
|
||||
);
|
||||
|
||||
vec4 wpos = mul(model, vec4(a_position, 1.0));
|
||||
gl_Position = mul(u_modelViewProj, wpos);
|
||||
|
||||
//gl_Position = mul(u_modelViewProj, vec4(a_position, 1.0));
|
||||
|
||||
vec3 normal = a_normal.xyz * 2.0 - 1.0;
|
||||
vec3 wnormal = instMul(normalMatrix, normal.xyz);
|
||||
v_normal = encodeNormalUint(normalize(wnormal.xyz));
|
||||
v_colour = colour;
|
||||
v_position = gl_Position.xyz;
|
||||
}
|
|
@ -1,6 +1,5 @@
|
|||
-- Copyright 2020- Teverse
|
||||
-- This script constructs (or builds) the baseline (or default) environment
|
||||
|
||||
return {
|
||||
default = function()
|
||||
teverse.scene.simulate = true
|
||||
|
@ -17,5 +16,7 @@ return {
|
|||
scale = vector3(30, 1, 30),
|
||||
colour = colour(1, 1, 1)
|
||||
})
|
||||
|
||||
-- Load Default PlayerScripts
|
||||
end
|
||||
}
|
Loading…
Reference in New Issue