Working set mesh

This commit is contained in:
Arnau Alier Torres 2025-05-08 02:05:51 +02:00
parent 5581dfa8ad
commit 930a17d730
24 changed files with 2800 additions and 6383 deletions

View File

@ -18,12 +18,10 @@ namespace Deer {
MeshComponent(const MeshComponent&) = default;
inline void setMesh(uint16_t _meshId) {
active = true;
meshId = _meshId;
}
inline void clear() {
active = false;
meshId = 0;
}
@ -42,9 +40,13 @@ namespace Deer {
inline bool isActive() {
return active;
}
inline bool setActive(bool value) {
return active = value;
}
private:
uint16_t meshId;
bool active;
bool active = false;
};
struct ShaderComponent {

View File

@ -36,8 +36,10 @@ namespace Deer {
for (const auto& entry : std::filesystem::directory_iterator(searchPath)) {
if (entry.is_directory())
dirData.dirs.push_back(entry.path().lexically_relative(idPath));
else if (entry.path().extension() == extension)
dirData.elements.push_back(entry.path().lexically_relative(idPath));
else if (entry.path().extension() == extension) {
Path ent = entry.path().lexically_relative(idPath);
dirData.elements.push_back(ent.parent_path() / ent.stem());
}
}
return dirData;

View File

@ -8,7 +8,7 @@ namespace Deer {
VertexArray* mesh_data = nullptr;
};
size_t minModelId = 0;
size_t minModelId = 1;
MeshManagerContainer meshes[SCENE_MAX_MESH_COUNT]{};
std::unordered_map<Path, size_t> mesh_name_id;

View File

@ -51,6 +51,9 @@ namespace Deer {
bool hasMeshComponent();
void removeMeshComponent();
// This is an internal function to avoid undefined behaviour from angelscript and avoid problems
bool assertEntity(const char* funcName);
// This function can be adapted to get a specific transform since the data is the same
EntityStruct getSelf();
};
@ -71,14 +74,18 @@ namespace Deer {
};
struct MeshComponentStruct : EntityStruct {
bool check_self();
bool assertMeshComponent();
bool isActive();
void setActive(bool);
bool hasMesh();
void clear();
std::string getMesh();
void setMesh(std::string&);
bool assertMeshComponent(const char* funcName);
};
EntityStruct getRoot();

View File

@ -12,7 +12,7 @@ namespace Deer {
}
// Renders the ui elements in the same line
void sameLine();
void sameline();
// Renders a line separator
void separator();
@ -39,6 +39,9 @@ namespace Deer {
// Renders a big text
void titleEnd(std::string&);
// Renders a big text in the center of a specified height
void titleCenterY(std::string&, int);
// Renders a icon in the specified size in pixels
void drawIcon(std::string& iconId, int size);
// Renders a icon in the specified size in pixels at the center
@ -57,9 +60,18 @@ namespace Deer {
// Prepares the function to accept payload with the id and calls the function with the data
void dragDropTarget(std::string&, CScriptAny*, asIScriptFunction*);
bool inputText(std::string& label, std::string&, std::string&);
// Draws a simple input with a label, input and output string
bool inputText(std::string& label, std::string&, std::string&);
// Draws a simple checkbox
bool checkbox(std::string& label, bool);
// Draws a simple checkbox
bool checkboxDisabled(std::string& label, bool);
// Draws a complex slider that with double click you can set a specific value
float magicSlider(std::string&, float, float);
// Draws a complex slider that with double click you can set a specific value in vec3
glm::vec3 magicSlider3(std::string&, glm::vec3, float);
void registerUIFunctions();
}
}

View File

@ -5,6 +5,7 @@
#include "Deer/Scene.h"
#define GET_ENTITY(id) Scene::environment.getEntity(id)
#define ASSERT_ENTITY(func, ret) if (!assertEntity(func)) ret;
namespace Deer {
namespace EditorEngine {
@ -22,7 +23,19 @@ namespace Deer {
return entityId;
}
bool EntityStruct::assertEntity(const char* funcName) {
if (!Scene::environment.entityExists(entityId)) {
DEER_UI_ENGINE_ERROR("Error, invalid entity calling {0}, entityId : {1}", funcName, entityId);
if (currentDockPanelExecution)
currentDockPanelExecution->invalidate();
return false;
}
return true;
}
std::string EntityStruct::getName() {
ASSERT_ENTITY("getName()", return "NULL");
return GET_ENTITY(entityId)
.getComponent<TagComponent>()
.tag;
@ -30,26 +43,36 @@ namespace Deer {
void EntityStruct::setName(std::string& name) {
ASSERT_ENTITY("setName()", return);
GET_ENTITY(entityId)
.getComponent<TagComponent>()
.tag = name;
}
void EntityStruct::destroy() {
ASSERT_ENTITY("destroy()", return);
GET_ENTITY(entityId)
.destroy();
}
bool EntityStruct::isRoot() {
ASSERT_ENTITY("isRoot()", return false);
return entityId == 0;
}
bool EntityStruct::exists() {
ASSERT_ENTITY("exists()", return false);
return Scene::environment
.entityExists(entityId);
}
void EntityStruct::setParent(EntityStruct parent_struct) {
ASSERT_ENTITY("setParent()", return);
Entity& parent = GET_ENTITY(parent_struct.entityId);
GET_ENTITY(entityId)
@ -57,6 +80,8 @@ namespace Deer {
}
EntityStruct EntityStruct::getParent() {
ASSERT_ENTITY("getParent()", return *this);
Entity& self = GET_ENTITY(entityId);
if (self.isRoot())
return *this;
@ -64,9 +89,9 @@ namespace Deer {
return EntityStruct(self.getParentId());
}
EntityStruct getParent();
bool EntityStruct::isDescendantOf(EntityStruct parent_struct) {
ASSERT_ENTITY("isDescendantOf()", return false);
Entity& parent = GET_ENTITY(parent_struct.entityId);
return GET_ENTITY(entityId)
@ -74,44 +99,64 @@ namespace Deer {
}
bool EntityStruct::opEquals(const EntityStruct& other) {
ASSERT_ENTITY("opEquals()", return false);
return entityId == other.entityId;
}
EntityStruct EntityStruct::getSelf() {
ASSERT_ENTITY("getSelf()", return *this);
return *this;
}
glm::vec3 TransformComponentStruct::getPosition() {
ASSERT_ENTITY("getPosition()", return glm::vec3());
return GET_ENTITY(entityId).getComponent<TransformComponent>().position;
}
glm::vec3 TransformComponentStruct::getScale() {
ASSERT_ENTITY("getScale()", return glm::vec3());
return GET_ENTITY(entityId).getComponent<TransformComponent>().scale;
}
glm::vec3 TransformComponentStruct::getRotation() {
ASSERT_ENTITY("getRotation()", return glm::vec3());
return GET_ENTITY(entityId).getComponent<TransformComponent>().getEulerAngles();
}
void TransformComponentStruct::setPosition(glm::vec3 value) {
ASSERT_ENTITY("setPosition()", return);
GET_ENTITY(entityId).getComponent<TransformComponent>().position = value;
}
void TransformComponentStruct::setScale(glm::vec3 value) {
ASSERT_ENTITY("setScale()", return);
GET_ENTITY(entityId).getComponent<TransformComponent>().scale = value;
}
void TransformComponentStruct::setRotation(glm::vec3 value) {
ASSERT_ENTITY("setRotation()", return);
GET_ENTITY(entityId).getComponent<TransformComponent>().setEulerAngles(value);
}
int EntityChildArrayStruct::getChildCount() {
ASSERT_ENTITY("getChildCount()", return 0);
return GET_ENTITY(entityId)
.getComponent<RelationshipComponent>()
.childCount;
}
EntityStruct EntityChildArrayStruct::getChild(int i) {
ASSERT_ENTITY("getChild()", return *this);
RelationshipComponent& rc = GET_ENTITY(entityId)
.getComponent<RelationshipComponent>();
@ -127,6 +172,8 @@ namespace Deer {
}
EntityStruct EntityStruct::createChild(std::string& name) {
ASSERT_ENTITY("createChild()", return *this);
Entity& me = GET_ENTITY(entityId);
Entity& newEnt = Scene::environment
@ -138,6 +185,8 @@ namespace Deer {
}
EntityStruct EntityStruct::getMeshComponent() {
ASSERT_ENTITY("getMeshComponent()", return *this);
Entity& self = GET_ENTITY(entityId);
if (!self.hasComponent<MeshComponent>()) {
@ -148,12 +197,16 @@ namespace Deer {
}
bool EntityStruct::hasMeshComponent() {
ASSERT_ENTITY("hasMeshComponent()", return false);
Entity& self = GET_ENTITY(entityId);
return self.hasComponent<MeshComponent>();
}
void EntityStruct::removeMeshComponent() {
ASSERT_ENTITY("removeMeshComponent()", return);
Entity& self = GET_ENTITY(entityId);
if (self.hasComponent<MeshComponent>()) {
@ -162,6 +215,7 @@ namespace Deer {
}
bool MeshComponentStruct::isActive() {
ASSERT_ENTITY("isActive()", return false);
Entity& self = GET_ENTITY(entityId);
if (!self.hasComponent<MeshComponent>()) {
@ -175,7 +229,24 @@ namespace Deer {
return self.getComponent<MeshComponent>().isActive();
}
void MeshComponentStruct::setActive(bool value) {
ASSERT_ENTITY("setActive(bool)", return);
Entity& self = GET_ENTITY(entityId);
if (!self.hasComponent<MeshComponent>()) {
DEER_UI_ENGINE_ERROR("Entity {0} has no component Mesh Component", entityId);
if (currentDockPanelExecution)
currentDockPanelExecution->invalidate();
return;
}
self.getComponent<MeshComponent>().setActive(value);
}
bool MeshComponentStruct::hasMesh() {
ASSERT_ENTITY("hasMesh()", return false);
Entity& self = GET_ENTITY(entityId);
if (!self.hasComponent<MeshComponent>()) {
@ -190,6 +261,8 @@ namespace Deer {
}
void MeshComponentStruct::clear() {
ASSERT_ENTITY("clear()", return);
Entity& self = GET_ENTITY(entityId);
if (!self.hasComponent<MeshComponent>()) {
@ -204,6 +277,8 @@ namespace Deer {
}
std::string MeshComponentStruct::getMesh() {
ASSERT_ENTITY("getMesh()", return "NULL");
Entity& self = GET_ENTITY(entityId);
if (!self.hasComponent<MeshComponent>()) {
@ -218,6 +293,8 @@ namespace Deer {
}
void MeshComponentStruct::setMesh(std::string& name) {
ASSERT_ENTITY("setMesh()", return);
Entity& self = GET_ENTITY(entityId);
if (!self.hasComponent<MeshComponent>()) {

View File

@ -243,6 +243,13 @@ namespace Deer {
asMETHOD(MeshComponentStruct, setMesh),
asCALL_THISCALL
));
AS_CHECK(scriptEngine->RegisterObjectMethod(
"MeshComponent",
"void set_isActive(const bool) property",
asMETHOD(MeshComponentStruct, setActive),
asCALL_THISCALL
));
}
void registerTransformComponent() {

View File

@ -38,8 +38,19 @@ namespace Deer {
textCenter(txt);
ImGui::PopFont();
}
void titleCenterY(std::string& txt, int) {
ImGui::PushFont(titleText);
void sameLine() {
float textHeight = ImGui::GetFontSize();
float yOffset = (64.0f - textHeight) * 0.5f;
ImGui::SetCursorPosY(ImGui::GetCursorPosY() + yOffset);
ImGui::Text("%s", txt.c_str());
ImGui::PopFont();
}
void sameline() {
ImGui::SameLine();
}
@ -180,7 +191,7 @@ namespace Deer {
data->AddRef();
ImGui::PushStyleVar(ImGuiStyleVar_WindowPadding, ImVec2(10, 10));
if (ImGui::BeginDragDropSource()) {
if (ImGui::BeginDragDropSource(ImGuiDragDropFlags_SourceAllowNullID)) {
if (DragDropPayload::payload)
DragDropPayload::payload->Release();
@ -230,9 +241,21 @@ namespace Deer {
return edited;
}
#include "imgui.h"
bool checkbox(std::string& label, bool value) {
ImGui::Checkbox(label.c_str(), &value);
return value;
}
bool checkboxDisabled(std::string& label, bool value) {
ImGui::BeginDisabled();
ImGui::Checkbox(label.c_str(), &value);
ImGui::EndDisabled();
return value;
}
float magicSlider(std::string& txt, float value, float speed) {
ImGui::PushID(txt.c_str());

View File

@ -0,0 +1,159 @@
#include "DeerStudio/EditorEngine.h"
#include "DeerStudio/EditorEngine/ErrorHandle.h"
#include "DeerStudio/EditorEngine/API.h"
#include "scripthandle.h"
#include "scriptany.h"
#include "angelscript.h"
namespace Deer {
void EditorEngine::registerUIFunctions() {
AS_CHECK(scriptEngine->RegisterGlobalFunction(
"void textColor(float, float, float, const string& in)",
asFUNCTION(textColor),
asCALL_CDECL
));
AS_CHECK(scriptEngine->RegisterGlobalFunction(
"void text(const string& in)",
asFUNCTION(text),
asCALL_CDECL
));
AS_CHECK(scriptEngine->RegisterGlobalFunction(
"void textCenter(const string& in)",
asFUNCTION(textCenter),
asCALL_CDECL
));
AS_CHECK(scriptEngine->RegisterGlobalFunction(
"void textEnd(const string& in)",
asFUNCTION(textEnd),
asCALL_CDECL
));
AS_CHECK(scriptEngine->RegisterGlobalFunction(
"void drawIcon(const string& in, int)",
asFUNCTION(drawIcon),
asCALL_CDECL
));
AS_CHECK(scriptEngine->RegisterGlobalFunction(
"bool isItemClicked(int)",
asFUNCTION(
isItemClicked
),
asCALL_CDECL
));
AS_CHECK(scriptEngine->RegisterGlobalFunction(
"bool isMouseDoubleClicked(int)",
asFUNCTION(
isMouseDoubleClicked
),
asCALL_CDECL
));
AS_CHECK(scriptEngine->RegisterGlobalFunction(
"void drawIconCentered(const string& in, int)",
asFUNCTION(drawIconCentered),
asCALL_CDECL
));
AS_CHECK(scriptEngine->RegisterGlobalFunction(
"void space()",
asFUNCTION(space),
asCALL_CDECL
));
AS_CHECK(scriptEngine->RegisterGlobalFunction(
"bool menuItem(const string& in)",
asFUNCTION(menuItem),
asCALL_CDECL
));
AS_CHECK(scriptEngine->RegisterGlobalFunction(
"bool button(const string& in)",
asFUNCTION(button),
asCALL_CDECL
));
AS_CHECK(scriptEngine->RegisterGlobalFunction(
"bool buttonCenter(const string&in)",
asFUNCTION(buttonCenter),
asCALL_CDECL
));
AS_CHECK(scriptEngine->RegisterGlobalFunction(
"bool buttonEnd(const string&in)",
asFUNCTION(buttonEnd),
asCALL_CDECL
));
AS_CHECK(scriptEngine->RegisterGlobalFunction(
"bool inputText(const string& in, const string& in, string& out)",
asFUNCTION(inputText),
asCALL_CDECL
));
AS_CHECK(scriptEngine->RegisterGlobalFunction(
"bool checkbox(const string& in, bool)",
asFUNCTION(checkbox),
asCALL_CDECL
));
AS_CHECK(scriptEngine->RegisterGlobalFunction(
"bool checkboxDisabled(const string& in, bool)",
asFUNCTION(checkboxDisabled),
asCALL_CDECL
));
AS_CHECK(scriptEngine->RegisterGlobalFunction(
"float magicSlider(const string& in, float, float)",
asFUNCTION(magicSlider),
asCALL_CDECL
));
AS_CHECK(scriptEngine->RegisterGlobalFunction(
"vec3 magicSlider3(const string& in, vec3, float)",
asFUNCTION(magicSlider3),
asCALL_CDECL
));
AS_CHECK(scriptEngine->RegisterGlobalFunction(
"void sameline()",
asFUNCTION(sameline),
asCALL_CDECL
));
AS_CHECK(scriptEngine->RegisterGlobalFunction(
"void separator()",
asFUNCTION(separator),
asCALL_CDECL
));
AS_CHECK(scriptEngine->RegisterGlobalFunction(
"void title(const string&in)",
asFUNCTION(title),
asCALL_CDECL
));
AS_CHECK(scriptEngine->RegisterGlobalFunction(
"void titleEnd(const string&in)",
asFUNCTION(titleEnd),
asCALL_CDECL
));
AS_CHECK(scriptEngine->RegisterGlobalFunction(
"void titleCenter(const string&in)",
asFUNCTION(titleCenter),
asCALL_CDECL
));
AS_CHECK(scriptEngine->RegisterGlobalFunction(
"void titleCenterY(const string&in, int)",
asFUNCTION(titleCenterY),
asCALL_CDECL
));
}
}

View File

@ -8,52 +8,7 @@ namespace Deer {
void EditorEngine::registerEditorEngineFunctions() {
registerEntityFunctions();
registerMathFunctions();
AS_CHECK(scriptEngine->RegisterGlobalFunction(
"void textColor(float, float, float, const string& in)",
asFUNCTION(textColor),
asCALL_CDECL
));
AS_CHECK(scriptEngine->RegisterGlobalFunction(
"void text(const string& in)",
asFUNCTION(text),
asCALL_CDECL
));
AS_CHECK(scriptEngine->RegisterGlobalFunction(
"void textCenter(const string& in)",
asFUNCTION(textCenter),
asCALL_CDECL
));
AS_CHECK(scriptEngine->RegisterGlobalFunction(
"void textEnd(const string& in)",
asFUNCTION(textEnd),
asCALL_CDECL
));
AS_CHECK(scriptEngine->RegisterGlobalFunction(
"void drawIcon(const string& in, int)",
asFUNCTION(drawIcon),
asCALL_CDECL
));
AS_CHECK(scriptEngine->RegisterGlobalFunction(
"bool isItemClicked(int)",
asFUNCTION(
isItemClicked
),
asCALL_CDECL
));
AS_CHECK(scriptEngine->RegisterGlobalFunction(
"bool isMouseDoubleClicked(int)",
asFUNCTION(
isMouseDoubleClicked
),
asCALL_CDECL
));
registerUIFunctions();
AS_CHECK(scriptEngine->RegisterGlobalFunction(
"void setupAutomaticColumns(int)",
@ -89,12 +44,6 @@ namespace Deer {
asCALL_CDECL
));
AS_CHECK(scriptEngine->RegisterGlobalFunction(
"void drawIconCentered(const string& in, int)",
asFUNCTION(drawIconCentered),
asCALL_CDECL
));
AS_CHECK(scriptEngine->RegisterGlobalFunction(
"int getResourceCount(ResourceType, const string& in)",
asFUNCTION(getResourceCount),
@ -149,12 +98,6 @@ namespace Deer {
asCALL_CDECL
));
AS_CHECK(scriptEngine->RegisterGlobalFunction(
"void space()",
asFUNCTION(space),
asCALL_CDECL
));
AS_CHECK(scriptEngine->RegisterGlobalFunction(
"void contextItemPopup(const string& in, any@+, ReciverFunc@+)",
asFUNCTION(contextItemPopup),
@ -191,12 +134,6 @@ namespace Deer {
asCALL_CDECL
));
AS_CHECK(scriptEngine->RegisterGlobalFunction(
"bool menuItem(const string& in)",
asFUNCTION(menuItem),
asCALL_CDECL
));
AS_CHECK(scriptEngine->RegisterGlobalFunction(
"void dragDropSource(const string& in, any@, const string& in)",
asFUNCTION(dragDropSource),
@ -209,71 +146,6 @@ namespace Deer {
asCALL_CDECL
));
AS_CHECK(scriptEngine->RegisterGlobalFunction(
"bool button(const string& in)",
asFUNCTION(button),
asCALL_CDECL
));
AS_CHECK(scriptEngine->RegisterGlobalFunction(
"bool buttonCenter(const string&in)",
asFUNCTION(buttonCenter),
asCALL_CDECL
));
AS_CHECK(scriptEngine->RegisterGlobalFunction(
"bool buttonEnd(const string&in)",
asFUNCTION(buttonEnd),
asCALL_CDECL
));
AS_CHECK(scriptEngine->RegisterGlobalFunction(
"bool inputText(const string& in, const string& in, string& out)",
asFUNCTION(inputText),
asCALL_CDECL
));
AS_CHECK(scriptEngine->RegisterGlobalFunction(
"float magicSlider(const string& in, float, float)",
asFUNCTION(magicSlider),
asCALL_CDECL
));
AS_CHECK(scriptEngine->RegisterGlobalFunction(
"vec3 magicSlider3(const string& in, vec3, float)",
asFUNCTION(magicSlider3),
asCALL_CDECL
));
AS_CHECK(scriptEngine->RegisterGlobalFunction(
"void sameLine()",
asFUNCTION(sameLine),
asCALL_CDECL
));
AS_CHECK(scriptEngine->RegisterGlobalFunction(
"void separator()",
asFUNCTION(separator),
asCALL_CDECL
));
AS_CHECK(scriptEngine->RegisterGlobalFunction(
"void title(const string&in)",
asFUNCTION(title),
asCALL_CDECL
));
AS_CHECK(scriptEngine->RegisterGlobalFunction(
"void titleEnd(const string&in)",
asFUNCTION(titleEnd),
asCALL_CDECL
));
AS_CHECK(scriptEngine->RegisterGlobalFunction(
"void titleCenter(const string&in)",
asFUNCTION(titleCenter),
asCALL_CDECL
));
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 309 B

View File

@ -33,6 +33,9 @@ class MeshExplorer : DockPanel {
int meshCount = getResourceCount(ResourceType::Mesh, cache_currentPath);
for (int i = 0; i < meshCount; i++) {
drawIconCentered("file", 64);
dragDropSource("MESH",
any(getResourcePathById(ResourceType::Mesh, cache_currentPath, i)),
getResourcePathById(ResourceType::Mesh, cache_currentPath, i));
textCenter(getResourceNameById(ResourceType::Mesh, cache_currentPath, i));
nextColumn();

View File

@ -18,5 +18,32 @@ void renderMeshComponent(any@ data) {
MeshComponent meshComponent = entity.getMeshComponent();
text(meshComponent.getMesh());
if (meshComponent.hasMesh) {
meshComponent.isActive = checkbox("Active", meshComponent.isActive);
} else {
checkboxDisabled("Active", meshComponent.isActive);
}
space();
drawIcon("object3d", 64);
dragDropTarget("MESH", any(meshComponent), setMeshComponentMesh);
sameline();
titleCenterY("Mesh Name", 64);
dragDropTarget("MESH", any(meshComponent), setMeshComponentMesh);
}
void setMeshComponentMesh(any@ meshComponent_data, any@ mesh_data){
string mesh;
mesh_data.retrieve(mesh);
MeshComponent meshComponent;
meshComponent_data.retrieve(meshComponent);
print(mesh);
meshComponent.setMesh(mesh);
}

View File

@ -20,7 +20,7 @@ class PropertiesPannel : DockPanel {
if (entity.isRoot)
return;
sameLine();
sameline();
if (buttonEnd("Add Component")) {
openPopup("ADD_COMPONENT", any(entity));
}

View File

@ -6,7 +6,7 @@ void renameEntity(any@ data) {
if (inputText("##RENAME", name, name)) {
entity.name = name;
}
sameLine();
sameline();
if (button("Accept")) {
closePopup();
}

View File

@ -30,7 +30,7 @@ DockId=0x00000001,0
Pos=880,24
Size=400,474
Collapsed=0
DockId=0x00000004,1
DockId=0x00000004,0
[Window][Viewport]
Pos=258,24
@ -82,7 +82,7 @@ Collapsed=0
Pos=880,24
Size=400,474
Collapsed=0
DockId=0x00000004,0
DockId=0x00000004,1
[Window][PropertiesP]
Pos=942,24
@ -103,7 +103,7 @@ DockSpace ID=0xA1672E74 Window=0x4647B76E Pos=0,24 Size=1280,696 Split=Y
DockNode ID=0x00000003 Parent=0x00000001 SizeRef=878,338 Split=X Selected=0x13926F0B
DockNode ID=0x00000005 Parent=0x00000003 SizeRef=256,446 Selected=0xE45B9F93
DockNode ID=0x00000006 Parent=0x00000003 SizeRef=620,446 CentralNode=1 Selected=0x13926F0B
DockNode ID=0x00000004 Parent=0x00000001 SizeRef=400,338 Selected=0xA35A27E3
DockNode ID=0x00000004 Parent=0x00000001 SizeRef=400,338 Selected=0x2A2C795E
DockNode ID=0x00000002 Parent=0x00000007 SizeRef=2560,331 Selected=0xCF339702
DockNode ID=0x00000008 Parent=0xA1672E74 SizeRef=1280,220 Selected=0xD962995A

View File

@ -1,466 +0,0 @@
{
"mesh": {
"hasNormalData": true,
"vertexPositions": [
{
"x": {
"int": 136,
"dec": 0
},
"y": {
"int": 136,
"dec": 0
},
"z": {
"int": 136,
"dec": 0
}
},
{
"x": {
"int": 136,
"dec": 0
},
"y": {
"int": 128,
"dec": 0
},
"z": {
"int": 136,
"dec": 0
}
},
{
"x": {
"int": 136,
"dec": 0
},
"y": {
"int": 136,
"dec": 0
},
"z": {
"int": 120,
"dec": 0
}
},
{
"x": {
"int": 136,
"dec": 0
},
"y": {
"int": 128,
"dec": 0
},
"z": {
"int": 120,
"dec": 0
}
},
{
"x": {
"int": 120,
"dec": 0
},
"y": {
"int": 136,
"dec": 0
},
"z": {
"int": 136,
"dec": 0
}
},
{
"x": {
"int": 120,
"dec": 0
},
"y": {
"int": 136,
"dec": 0
},
"z": {
"int": 120,
"dec": 0
}
},
{
"x": {
"int": 120,
"dec": 0
},
"y": {
"int": 128,
"dec": 0
},
"z": {
"int": 136,
"dec": 0
}
},
{
"x": {
"int": 120,
"dec": 0
},
"y": {
"int": 128,
"dec": 0
},
"z": {
"int": 120,
"dec": 0
}
},
{
"x": {
"int": 136,
"dec": 0
},
"y": {
"int": 136,
"dec": 0
},
"z": {
"int": 136,
"dec": 0
}
},
{
"x": {
"int": 136,
"dec": 0
},
"y": {
"int": 136,
"dec": 0
},
"z": {
"int": 120,
"dec": 0
}
},
{
"x": {
"int": 120,
"dec": 0
},
"y": {
"int": 136,
"dec": 0
},
"z": {
"int": 136,
"dec": 0
}
},
{
"x": {
"int": 120,
"dec": 0
},
"y": {
"int": 136,
"dec": 0
},
"z": {
"int": 120,
"dec": 0
}
},
{
"x": {
"int": 136,
"dec": 0
},
"y": {
"int": 128,
"dec": 0
},
"z": {
"int": 136,
"dec": 0
}
},
{
"x": {
"int": 120,
"dec": 0
},
"y": {
"int": 128,
"dec": 0
},
"z": {
"int": 136,
"dec": 0
}
},
{
"x": {
"int": 136,
"dec": 0
},
"y": {
"int": 128,
"dec": 0
},
"z": {
"int": 120,
"dec": 0
}
},
{
"x": {
"int": 120,
"dec": 0
},
"y": {
"int": 128,
"dec": 0
},
"z": {
"int": 120,
"dec": 0
}
},
{
"x": {
"int": 136,
"dec": 0
},
"y": {
"int": 136,
"dec": 0
},
"z": {
"int": 136,
"dec": 0
}
},
{
"x": {
"int": 120,
"dec": 0
},
"y": {
"int": 136,
"dec": 0
},
"z": {
"int": 136,
"dec": 0
}
},
{
"x": {
"int": 136,
"dec": 0
},
"y": {
"int": 128,
"dec": 0
},
"z": {
"int": 136,
"dec": 0
}
},
{
"x": {
"int": 120,
"dec": 0
},
"y": {
"int": 128,
"dec": 0
},
"z": {
"int": 136,
"dec": 0
}
},
{
"x": {
"int": 136,
"dec": 0
},
"y": {
"int": 136,
"dec": 0
},
"z": {
"int": 120,
"dec": 0
}
},
{
"x": {
"int": 136,
"dec": 0
},
"y": {
"int": 128,
"dec": 0
},
"z": {
"int": 120,
"dec": 0
}
},
{
"x": {
"int": 120,
"dec": 0
},
"y": {
"int": 136,
"dec": 0
},
"z": {
"int": 120,
"dec": 0
}
},
{
"x": {
"int": 120,
"dec": 0
},
"y": {
"int": 128,
"dec": 0
},
"z": {
"int": 120,
"dec": 0
}
}
],
"vertexNormals": [
{
"x": -64,
"y": 0,
"z": 0
},
{
"x": -64,
"y": 0,
"z": 0
},
{
"x": -64,
"y": 0,
"z": 0
},
{
"x": -64,
"y": 0,
"z": 0
},
{
"x": 64,
"y": 0,
"z": 0
},
{
"x": 64,
"y": 0,
"z": 0
},
{
"x": 64,
"y": 0,
"z": 0
},
{
"x": 64,
"y": 0,
"z": 0
},
{
"x": 0,
"y": -64,
"z": 0
},
{
"x": 0,
"y": -64,
"z": 0
},
{
"x": 0,
"y": -64,
"z": 0
},
{
"x": 0,
"y": -64,
"z": 0
},
{
"x": 0,
"y": 64,
"z": 0
},
{
"x": 0,
"y": 64,
"z": 0
},
{
"x": 0,
"y": 64,
"z": 0
},
{
"x": 0,
"y": 64,
"z": 0
},
{
"x": 0,
"y": 0,
"z": -64
},
{
"x": 0,
"y": 0,
"z": -64
},
{
"x": 0,
"y": 0,
"z": -64
},
{
"x": 0,
"y": 0,
"z": -64
},
{
"x": 0,
"y": 0,
"z": 64
},
{
"x": 0,
"y": 0,
"z": 64
},
{
"x": 0,
"y": 0,
"z": 64
},
{
"x": 0,
"y": 0,
"z": 64
}
],
"indices": [0, 2, 1, 0, 3, 2, 4, 6, 5, 4, 7, 6, 8, 10, 9, 8, 11, 10, 12, 14, 13, 12, 15, 14, 16, 18, 17, 16, 19, 18, 20, 22, 21, 20, 23, 22]
}
}

File diff suppressed because it is too large Load Diff

Binary file not shown.

View File

@ -1,71 +0,0 @@
{
"mesh": {
"hasNormalData": true,
"vertexPositions": [
{
"x": {
"int": 128,
"dec": 0
},
"y": {
"int": 128,
"dec": 0
},
"z": {
"int": 128,
"dec": 0
}
},
{
"x": {
"int": 128,
"dec": 64
},
"y": {
"int": 128,
"dec": 0
},
"z": {
"int": 129,
"dec": 0
}
},
{
"x": {
"int": 129,
"dec": 0
},
"y": {
"int": 128,
"dec": 0
},
"z": {
"int": 128,
"dec": 0
}
}
],
"vertexNormals": [
{
"x": 0,
"y": 64,
"z": 0
},
{
"x": 0,
"y": 64,
"z": 0
},
{
"x": 0,
"y": 64,
"z": 0
}
],
"indices": [
0,
1,
2
]
}
}

File diff suppressed because it is too large Load Diff

View File

@ -1,466 +0,0 @@
{
"mesh": {
"hasNormalData": true,
"vertexPositions": [
{
"x": {
"int": 136,
"dec": 0
},
"y": {
"int": 136,
"dec": 0
},
"z": {
"int": 136,
"dec": 0
}
},
{
"x": {
"int": 136,
"dec": 0
},
"y": {
"int": 128,
"dec": 0
},
"z": {
"int": 136,
"dec": 0
}
},
{
"x": {
"int": 136,
"dec": 0
},
"y": {
"int": 136,
"dec": 0
},
"z": {
"int": 120,
"dec": 0
}
},
{
"x": {
"int": 136,
"dec": 0
},
"y": {
"int": 128,
"dec": 0
},
"z": {
"int": 120,
"dec": 0
}
},
{
"x": {
"int": 120,
"dec": 0
},
"y": {
"int": 136,
"dec": 0
},
"z": {
"int": 136,
"dec": 0
}
},
{
"x": {
"int": 120,
"dec": 0
},
"y": {
"int": 136,
"dec": 0
},
"z": {
"int": 120,
"dec": 0
}
},
{
"x": {
"int": 120,
"dec": 0
},
"y": {
"int": 128,
"dec": 0
},
"z": {
"int": 136,
"dec": 0
}
},
{
"x": {
"int": 120,
"dec": 0
},
"y": {
"int": 128,
"dec": 0
},
"z": {
"int": 120,
"dec": 0
}
},
{
"x": {
"int": 136,
"dec": 0
},
"y": {
"int": 136,
"dec": 0
},
"z": {
"int": 136,
"dec": 0
}
},
{
"x": {
"int": 136,
"dec": 0
},
"y": {
"int": 136,
"dec": 0
},
"z": {
"int": 120,
"dec": 0
}
},
{
"x": {
"int": 120,
"dec": 0
},
"y": {
"int": 136,
"dec": 0
},
"z": {
"int": 136,
"dec": 0
}
},
{
"x": {
"int": 120,
"dec": 0
},
"y": {
"int": 136,
"dec": 0
},
"z": {
"int": 120,
"dec": 0
}
},
{
"x": {
"int": 136,
"dec": 0
},
"y": {
"int": 128,
"dec": 0
},
"z": {
"int": 136,
"dec": 0
}
},
{
"x": {
"int": 120,
"dec": 0
},
"y": {
"int": 128,
"dec": 0
},
"z": {
"int": 136,
"dec": 0
}
},
{
"x": {
"int": 136,
"dec": 0
},
"y": {
"int": 128,
"dec": 0
},
"z": {
"int": 120,
"dec": 0
}
},
{
"x": {
"int": 120,
"dec": 0
},
"y": {
"int": 128,
"dec": 0
},
"z": {
"int": 120,
"dec": 0
}
},
{
"x": {
"int": 136,
"dec": 0
},
"y": {
"int": 136,
"dec": 0
},
"z": {
"int": 136,
"dec": 0
}
},
{
"x": {
"int": 120,
"dec": 0
},
"y": {
"int": 136,
"dec": 0
},
"z": {
"int": 136,
"dec": 0
}
},
{
"x": {
"int": 136,
"dec": 0
},
"y": {
"int": 128,
"dec": 0
},
"z": {
"int": 136,
"dec": 0
}
},
{
"x": {
"int": 120,
"dec": 0
},
"y": {
"int": 128,
"dec": 0
},
"z": {
"int": 136,
"dec": 0
}
},
{
"x": {
"int": 136,
"dec": 0
},
"y": {
"int": 136,
"dec": 0
},
"z": {
"int": 120,
"dec": 0
}
},
{
"x": {
"int": 136,
"dec": 0
},
"y": {
"int": 128,
"dec": 0
},
"z": {
"int": 120,
"dec": 0
}
},
{
"x": {
"int": 120,
"dec": 0
},
"y": {
"int": 136,
"dec": 0
},
"z": {
"int": 120,
"dec": 0
}
},
{
"x": {
"int": 120,
"dec": 0
},
"y": {
"int": 128,
"dec": 0
},
"z": {
"int": 120,
"dec": 0
}
}
],
"vertexNormals": [
{
"x": -64,
"y": 0,
"z": 0
},
{
"x": -64,
"y": 0,
"z": 0
},
{
"x": -64,
"y": 0,
"z": 0
},
{
"x": -64,
"y": 0,
"z": 0
},
{
"x": 64,
"y": 0,
"z": 0
},
{
"x": 64,
"y": 0,
"z": 0
},
{
"x": 64,
"y": 0,
"z": 0
},
{
"x": 64,
"y": 0,
"z": 0
},
{
"x": 0,
"y": -64,
"z": 0
},
{
"x": 0,
"y": -64,
"z": 0
},
{
"x": 0,
"y": -64,
"z": 0
},
{
"x": 0,
"y": -64,
"z": 0
},
{
"x": 0,
"y": 64,
"z": 0
},
{
"x": 0,
"y": 64,
"z": 0
},
{
"x": 0,
"y": 64,
"z": 0
},
{
"x": 0,
"y": 64,
"z": 0
},
{
"x": 0,
"y": 0,
"z": -64
},
{
"x": 0,
"y": 0,
"z": -64
},
{
"x": 0,
"y": 0,
"z": -64
},
{
"x": 0,
"y": 0,
"z": -64
},
{
"x": 0,
"y": 0,
"z": 64
},
{
"x": 0,
"y": 0,
"z": 64
},
{
"x": 0,
"y": 0,
"z": 64
},
{
"x": 0,
"y": 0,
"z": 64
}
],
"indices": [0, 2, 1, 0, 3, 2, 4, 6, 5, 4, 7, 6, 8, 10, 9, 8, 11, 10, 12, 14, 13, 12, 15, 14, 16, 18, 17, 16, 19, 18, 20, 22, 21, 20, 23, 22]
}
}

View File

@ -1,18 +0,0 @@
{
"voxelAspect": {
"name": "",
"textureFaces": {
"left": "",
"right": "",
"down": "",
"up": "",
"front": "",
"back": ""
},
"emission": {
"red": 0,
"green": 0,
"blue": 0
}
}
}

View File

@ -1,6 +0,0 @@
{
"voxel": {
"name": "",
"type": "air"
}
}