protected override void Awake() { // add custom components to gameobject _movement = gameObject.AddComponent <Components.Movement>(); _health = gameObject.AddComponent <Components.HitPoints>(); _weapon = gameObject.AddComponent <Components.Weapon>(); }
public Prediction(Components.Position pos, Components.Movement mov) { this.pos = pos; this.mov = mov; a = b = c = Vec3.Zero; d = pos.Pos; }
public void Update(Components.Position npos, Components.Movement nmov) { if (pos.Room != npos.Room) { pos.Room = npos.Room; pos.Rot = npos.Rot; pos.Pos = npos.Pos; mov.Vel = nmov.Vel; a = b = c = Vec3.Zero; d = pos.Pos; return; } pos.Rot = npos.Rot; k = 0; d = pos.Pos; c = mov.Vel * LAG; // a = pos - b - c - d // 3a + 2b + c = vel * LAG // 3pos - 3b - 3c - 3d + 2b + c = vel * LAG b = 3 * npos.Pos - 2 * c - 3 * d - nmov.Vel * LAG; a = npos.Pos - b - c - d; }
public override void OnInspectorGUI() { if (target == null) { return; } Entity e = (Entity)target; if (EntityManager.Instance == null || ComponentManager.Instance == null) { return; } PlayerManager playerManager = PlayerManager.Instance; EntityManager entityManager = EntityManager.Instance; ComponentManager componentManager = ComponentManager.Instance; if (e.id == 0 || entityManager.entities.ContainsKey(e.id) == false) { if (GUILayout.Button("Create Entity")) { e.id = entityManager.GenerateEntityID(); e.components = new List <ComponentType>(); entityManager.entities.Add(e.id, e); componentManager.entityGameObjects.Add(e.id, e.gameObject); componentManager.entityTransforms.Add(e.id, e.transform); componentManager.rigidbodies.Add(e.id, e.GetComponent <Rigidbody>()); } return; } else { if (GUILayout.Button("Delete Entity")) { entityManager.DeleteEntity(e.id); return; } } EditorGUILayout.IntField("EntityID", e.id); EditorGUILayout.BeginHorizontal(); componentTypeToSet = (Fudo.Enums.ComponentType)EditorGUILayout.EnumPopup("Component to create:", componentTypeToSet); if (GUILayout.Button("Create")) { if (e.components.Contains(componentTypeToSet) == false) { switch (componentTypeToSet) { case Enums.ComponentType.Position: componentManager.AddComponent(Enums.ComponentType.Position, Vector3.zero, e.id); break; case Enums.ComponentType.Scale: componentManager.AddComponent(Enums.ComponentType.Scale, Vector3.one, e.id); break; case Enums.ComponentType.Rotation: componentManager.AddComponent(Enums.ComponentType.Rotation, Quaternion.identity, e.id); break; case Enums.ComponentType.Direction: componentManager.AddComponent(Enums.ComponentType.Direction, Vector3.forward, e.id); break; case Enums.ComponentType.MaxSpeed: componentManager.AddComponent(Enums.ComponentType.MaxSpeed, 5.0f, e.id); break; case Enums.ComponentType.Movement: componentManager.AddComponent(Enums.ComponentType.Movement, new Components.Movement(), e.id); break; case Enums.ComponentType.InputToMovement: componentManager.AddComponent(Enums.ComponentType.InputToMovement, new Components.MovementInput(), e.id); break; } } } if (GUILayout.Button("Remove")) { if (e.components.Contains(componentTypeToSet)) { componentManager.RemoveComponent(componentTypeToSet, e.id); } } EditorGUILayout.EndHorizontal(); foreach (Enums.ComponentType componentType in e.components) { EditorGUILayout.Space(); Rect rect = EditorGUILayout.BeginVertical(); EditorGUI.DrawRect(rect, Color.gray); switch (componentType) { default: Debug.LogWarning("Component draw not implemented for: " + componentType); break; case Enums.ComponentType.MaxSpeed: float f = componentManager.ReturnFloatComponent(componentType, e.id); f = EditorGUILayout.FloatField(componentType.ToString(), f); componentManager.SetComponent(componentType, f, e.id); break; case Enums.ComponentType.IsVisible: bool b = componentManager.ReturnBooleanComponent(componentType, e.id); b = EditorGUILayout.Toggle(componentType.ToString(), b); componentManager.SetComponent(componentType, b, e.id); break; case Enums.ComponentType.Position: case Enums.ComponentType.Direction: case Enums.ComponentType.Scale: Vector3 v = componentManager.ReturnVector3Component(componentType, e.id); v = EditorGUILayout.Vector3Field(componentType.ToString(), v); componentManager.SetComponent(componentType, v, e.id); break; case Enums.ComponentType.Rotation: Quaternion qt = componentManager.ReturnQuaternionComponent(componentType, e.id); qt = Quaternion.Euler(EditorGUILayout.Vector3Field(componentType.ToString(), qt.eulerAngles)); componentManager.SetComponent(componentType, qt, e.id); break; case Enums.ComponentType.Movement: case Enums.ComponentType.PreviousFrameMovement: EditorGUILayout.LabelField(componentType.ToString()); Components.Movement mv = componentManager.ReturnMovementComponent(componentType, e.id); mv.velocity = EditorGUILayout.Vector3Field("Velocity", mv.velocity); break; case Enums.ComponentType.Controllable: Components.Controllable controllable; if (componentManager.controllableComponents.TryGetValue(e.id, out controllable)) { EditorGUILayout.LabelField(componentType.ToString()); } break; } EditorGUILayout.EndVertical(); } }
public override void OnInspectorGUI() { Entity e = (Entity)target; EditorGUILayout.IntField("EntityID", e.id); if (ComponentManager.Instance == null) { return; } ComponentManager componentManager = ComponentManager.Instance; foreach (Enums.ComponentType componentType in e.components) { EditorGUILayout.Space(); Rect rect = EditorGUILayout.BeginVertical(); EditorGUI.DrawRect(rect, Color.gray); switch (componentType) { default: Debug.LogWarning("Component draw not implemented for: " + componentType); break; case Enums.ComponentType.MaxSpeed: float f = componentManager.ReturnFloatComponent(componentType, e.id); f = EditorGUILayout.FloatField(componentType.ToString(), f); componentManager.SetComponent(componentType, f, e.id); break; case Enums.ComponentType.IsVisible: bool b = componentManager.ReturnBooleanComponent(componentType, e.id); b = EditorGUILayout.Toggle(componentType.ToString(), b); componentManager.SetComponent(componentType, b, e.id); break; case Enums.ComponentType.Position: case Enums.ComponentType.Direction: case Enums.ComponentType.Scale: Vector3 v = componentManager.ReturnVector3Component(componentType, e.id); v = EditorGUILayout.Vector3Field(componentType.ToString(), v); componentManager.SetComponent(componentType, v, e.id); break; case Enums.ComponentType.Rotation: Quaternion qt = componentManager.ReturnQuaternionComponent(componentType, e.id); qt = Quaternion.Euler(EditorGUILayout.Vector3Field(componentType.ToString(), qt.eulerAngles)); componentManager.SetComponent(componentType, qt, e.id); break; case Enums.ComponentType.Movement: case Enums.ComponentType.PreviousFrameMovement: EditorGUILayout.LabelField(componentType.ToString()); Components.Movement mv = componentManager.ReturnMovementComponent(componentType, e.id); mv.velocity = EditorGUILayout.Vector3Field("Velocity", mv.velocity); break; case Enums.ComponentType.Controllable: Components.Controllable controllable; if (componentManager.controllableComponents.TryGetValue(e.id, out controllable)) { EditorGUILayout.LabelField(componentType.ToString()); } break; } EditorGUILayout.EndVertical(); } }