Add files via upload
This commit is contained in:
7
LWGlass/components/Building.jecs
Normal file
7
LWGlass/components/Building.jecs
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
Glass:
|
||||||
|
column: "Miscellaneous"
|
||||||
|
category: "Structural"
|
||||||
|
prefab:
|
||||||
|
clientCode: LWGlass.Client.Glass
|
||||||
|
placingRules:
|
||||||
|
allowWorldRotation: false
|
||||||
2
LWGlass/languages/English/English_components.jecs
Normal file
2
LWGlass/languages/English/English_components.jecs
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
|
||||||
|
|
||||||
7
LWGlass/manifest.jecs
Normal file
7
LWGlass/manifest.jecs
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
ID: LWGlass
|
||||||
|
Name: LWGlass
|
||||||
|
Author: Astronand
|
||||||
|
Version: 1.0.0
|
||||||
|
Priority: 0
|
||||||
|
Dependencies:
|
||||||
|
- AssemblyLoader
|
||||||
16
LWGlass/src/client/Loader.cs
Normal file
16
LWGlass/src/client/Loader.cs
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
using LogicAPI.Client;
|
||||||
|
using LogicLog;
|
||||||
|
|
||||||
|
namespace LWGlass
|
||||||
|
{
|
||||||
|
public class LWGClient : ClientMod
|
||||||
|
{
|
||||||
|
|
||||||
|
static LWGClient() {}
|
||||||
|
|
||||||
|
protected override void Initialize()
|
||||||
|
{
|
||||||
|
Logger.Info("LWGClient - Loaded Client");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
116
LWGlass/src/client/Main.cs
Normal file
116
LWGlass/src/client/Main.cs
Normal file
@@ -0,0 +1,116 @@
|
|||||||
|
using JimmysUnityUtilities;
|
||||||
|
using LogicAPI.Data;
|
||||||
|
using LogicWorld.Building.Overhaul;
|
||||||
|
using LogicWorld.ClientCode;
|
||||||
|
using LogicWorld.ClientCode.Resizing;
|
||||||
|
using LogicWorld.Interfaces;
|
||||||
|
using LogicWorld.Interfaces.Building;
|
||||||
|
using LogicWorld.Rendering.Chunks;
|
||||||
|
using LogicWorld.Rendering.Components;
|
||||||
|
using LogicWorld.Rendering.Dynamics;
|
||||||
|
using LogicWorld.SharedCode.Components;
|
||||||
|
using Unified.UniversalBlur.Runtime;
|
||||||
|
using UnityEngine;
|
||||||
|
|
||||||
|
namespace LWGlass.Client
|
||||||
|
{
|
||||||
|
public class Glass :
|
||||||
|
ComponentClientCode<CircuitBoard.IData>,
|
||||||
|
IColorableClientCode,
|
||||||
|
IResizableX,
|
||||||
|
IResizableZ
|
||||||
|
{
|
||||||
|
private int previousSizeX;
|
||||||
|
private int previousSizeZ;
|
||||||
|
|
||||||
|
public Color24 Color
|
||||||
|
{
|
||||||
|
get => Data.Color;
|
||||||
|
set => Data.Color = value;
|
||||||
|
}
|
||||||
|
public string ColorsFileKey => "Boards";
|
||||||
|
public float MinColorValue => 0;
|
||||||
|
|
||||||
|
public int SizeX
|
||||||
|
{
|
||||||
|
get => Data.SizeX;
|
||||||
|
set => Data.SizeX = value;
|
||||||
|
}
|
||||||
|
public int MinX => 1;
|
||||||
|
public int MaxX => 80;
|
||||||
|
public float GridIntervalX => 1f;
|
||||||
|
|
||||||
|
public int SizeZ
|
||||||
|
{
|
||||||
|
get => Data.SizeZ;
|
||||||
|
set => Data.SizeZ = value;
|
||||||
|
}
|
||||||
|
public int MinZ => 1;
|
||||||
|
public int MaxZ => 80;
|
||||||
|
public float GridIntervalZ => 1f;
|
||||||
|
|
||||||
|
protected override void OnComponentImaged()
|
||||||
|
{
|
||||||
|
Data.Color = new Color24(255, 255, 255);
|
||||||
|
GameObject obj = Decorations[0].DecorationObject;
|
||||||
|
obj.GetComponent<MeshRenderer>().sharedMaterial = LogicWorld.References.MaterialsCache.StandardUnlitColorTransparent(Color, 0.7f);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected override void DataUpdate()
|
||||||
|
{
|
||||||
|
GameObject obj = Decorations[0].DecorationObject;
|
||||||
|
obj.GetComponent<MeshRenderer>().sharedMaterial = LogicWorld.References.MaterialsCache.StandardUnlitColorTransparent(Color, 0.2f);
|
||||||
|
if (SizeX == previousSizeX && SizeZ == previousSizeZ)
|
||||||
|
return;
|
||||||
|
previousSizeX = SizeX;
|
||||||
|
previousSizeZ = SizeZ;
|
||||||
|
obj.transform.localScale = new Vector3(SizeX, .5f, SizeZ) * 0.3f;
|
||||||
|
}
|
||||||
|
protected override ChildPlacementInfo GenerateChildPlacementInfo()
|
||||||
|
{
|
||||||
|
ChildPlacementInfo childPlacementInfo = new ChildPlacementInfo();
|
||||||
|
childPlacementInfo.Points = new FixedPlacingPoint[SizeZ * SizeX];
|
||||||
|
|
||||||
|
int i = 0;
|
||||||
|
for (int iX = 0; iX < SizeX; iX++)
|
||||||
|
{
|
||||||
|
for (int iZ = 0; iZ < SizeZ; iZ++)
|
||||||
|
{
|
||||||
|
childPlacementInfo.Points[i++] = new FixedPlacingPoint()
|
||||||
|
{
|
||||||
|
Position = new Vector3(iX, .5f, iZ)
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return childPlacementInfo;
|
||||||
|
}
|
||||||
|
protected override IDecoration[] GenerateDecorations(Transform parentToCreateDecorationsUnder)
|
||||||
|
{
|
||||||
|
var myGameObject = new GameObject("glass");
|
||||||
|
myGameObject.transform.SetParent(parentToCreateDecorationsUnder);
|
||||||
|
var collider = myGameObject.AddComponent<BoxCollider>();
|
||||||
|
collider.center = new Vector3(.5f,.5f,.5f);
|
||||||
|
var meshFilter = myGameObject.AddComponent<MeshFilter>();
|
||||||
|
meshFilter.sharedMesh = LogicWorld.References.Meshes.OriginCube;
|
||||||
|
var meshRenderer = myGameObject.AddComponent<MeshRenderer>();
|
||||||
|
meshRenderer.sharedMaterial = LogicWorld.References.MaterialsCache.StandardUnlitColorTransparent(Color, 0.2f);
|
||||||
|
return new IDecoration[]
|
||||||
|
{
|
||||||
|
new Decoration()
|
||||||
|
{
|
||||||
|
DecorationObject = myGameObject,
|
||||||
|
LocalPosition = new Vector3(-.15f, 0, -.15f),
|
||||||
|
AutoSetupColliders = true,
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
protected override void SetDataDefaultValues()
|
||||||
|
{
|
||||||
|
Data.SizeX = 1;
|
||||||
|
Data.SizeZ = 1;
|
||||||
|
Data.Color = new Color24(120, 120, 120);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user