12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 |
- using System.Collections;
- using System.Collections.Generic;
- using UnityEngine;
- using KairoEngine.Core;
- namespace KairoEngine.VoxelBuildingSystem
- {
- public class BuildingBlueprintController : MonoBehaviour
- {
- public VoxelBuildingSystem buildingSystem;
- public Transform currentBlueprint;
- private void Start() {
- RefreshVisual();
- GenericEvents.StartListening("OnSelectedChanged", OnSelectedChanged);
- }
- private void OnDisable()
- {
- GenericEvents.StopListening("OnSelectedChanged", OnSelectedChanged);
- }
- private void OnSelectedChanged() {
- RefreshVisual();
- }
- private void LateUpdate() {
- if(currentBlueprint == null) return;
- Vector3 targetPosition = buildingSystem.GetMouseWorldSnappedPosition();
- //targetPosition.y = 1f;
- currentBlueprint.transform.position = Vector3.Lerp(currentBlueprint.transform.position, targetPosition, Time.deltaTime * 15f);
- currentBlueprint.transform.rotation = Quaternion.Lerp(transform.rotation, buildingSystem.transform.rotation, Time.deltaTime * 15f);
- if(buildingSystem.tool == VoxelBuildingTool.Build) currentBlueprint.gameObject.SetActive(true);
- else currentBlueprint.gameObject.SetActive(false);
- }
- private void RefreshVisual() {
- if (currentBlueprint != null) {
- Destroy(currentBlueprint.gameObject);
- currentBlueprint = null;
- }
- BuildingTemplate buildingTemplate = buildingSystem.buildingTemplates[buildingSystem.currentBuildingTemplate];
- if (buildingTemplate != null) {
- currentBlueprint = Instantiate(buildingTemplate.visual, Vector3.zero, Quaternion.identity);
- currentBlueprint.parent = transform;
- currentBlueprint.localPosition = Vector3.zero;
- currentBlueprint.localEulerAngles = Vector3.zero;
- }
- }
-
- }
- }
|