Add more docs.
This commit is contained in:
parent
461705d1e3
commit
fad6c0fc0c
@ -2,14 +2,23 @@
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
|
||||
/// <summary>
|
||||
/// A syncable component that all characters have. Controls the character's subsystems.
|
||||
/// </summary>
|
||||
public class Character : SyncBase {
|
||||
/// <summary>
|
||||
/// How fast the player should move in Unity's spatial units per second.
|
||||
/// </summary>
|
||||
public float MovementSpeed = 5.0f;
|
||||
/// <summary>
|
||||
/// The character controller, used to move the character. Handles collisions.
|
||||
/// </summary>
|
||||
public CharacterController CharacterController;
|
||||
|
||||
private Vector3 MovementDirection = new Vector3();
|
||||
|
||||
/// <summary>
|
||||
/// Moves the character in the wanted direction.
|
||||
/// Moves the character in the given direction.
|
||||
/// </summary>
|
||||
/// <param name="Direction">Movement direction.</param>
|
||||
public void Move(Vector3 Direction) {
|
||||
@ -27,6 +36,9 @@ public class Character : SyncBase {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Whether the player is moving or not.
|
||||
/// </summary>
|
||||
public bool Moving() {
|
||||
return MovementDirection.sqrMagnitude != 0;
|
||||
}
|
||||
|
@ -6,8 +6,8 @@ using UnityEngine.UI;
|
||||
|
||||
/// <summary>
|
||||
/// Controls an input and an output to implement a console interface to call
|
||||
/// arbitrary commands which can be set from anywhere in the program.
|
||||
/// <seealso cref="Term"/>
|
||||
/// arbitrary commands which can be set from anywhere in the program through
|
||||
/// <see cref="Term"/>.
|
||||
/// </summary>
|
||||
public class DebugConsole : MonoBehaviour {
|
||||
private static readonly Regex CommandPartRegex = new Regex("([^ \"]+ )|(\"[^\"]+\")");
|
||||
@ -68,7 +68,7 @@ public class DebugConsole : MonoBehaviour {
|
||||
/// Adds a command to be used in the console.
|
||||
/// </summary>
|
||||
/// <param name="command">The command template that should be used.
|
||||
/// eg. "print (text)" or "add (number) (number)"</param>
|
||||
/// eg. "print (text)" or "add (number) (number)".</param>
|
||||
/// <param name="description">Description.</param>
|
||||
/// <param name="action">Action.</param>
|
||||
public void AddCommand(string command, string description, DebugConsoleAction.Action action) {
|
||||
|
@ -1,11 +1,26 @@
|
||||
using System.Collections.Generic;
|
||||
|
||||
/// <summary>
|
||||
/// Class that defines an action that commands in the
|
||||
/// <see cref="DebugConsole"/> might use.
|
||||
/// </summary>
|
||||
public class DebugConsoleAction {
|
||||
/// <summary>
|
||||
/// A delegate for all of the actions that commands do.
|
||||
/// </summary>
|
||||
public delegate void Action(List<string> command);
|
||||
/// <summary>
|
||||
/// A description that will be shown when using the "help (command)" command in the console.
|
||||
/// </summary>
|
||||
public readonly string Description;
|
||||
|
||||
private Action ActionFunc;
|
||||
|
||||
/// <summary>
|
||||
/// Initializes a new instance of the <see cref="DebugConsoleAction"/> class.
|
||||
/// </summary>
|
||||
/// <param name="description">Description.</param>
|
||||
/// <param name="actionFunc">Action func.</param>
|
||||
public DebugConsoleAction(string description, Action actionFunc) {
|
||||
this.Description = description;
|
||||
this.ActionFunc = actionFunc;
|
||||
|
@ -2,7 +2,17 @@
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
|
||||
/// <summary>
|
||||
/// Types of entities. Every entity type has its own prefab, see
|
||||
/// <see cref="Spawner"/>.
|
||||
/// </summary>
|
||||
public enum EntityType {
|
||||
/// <summary>
|
||||
/// Player character.
|
||||
/// </summary>
|
||||
PC,
|
||||
/// <summary>
|
||||
/// Non player character.
|
||||
/// </summary>
|
||||
NPC
|
||||
}
|
||||
|
@ -2,7 +2,14 @@
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
|
||||
/// <summary>
|
||||
/// Controls the player character. Shouldn't exist on the server, and only one
|
||||
/// should exist per client (the character that client is controlling).
|
||||
/// </summary>
|
||||
public class PlayerController : MonoBehaviour {
|
||||
/// <summary>
|
||||
/// The character this controller should control.
|
||||
/// </summary>
|
||||
public Character Character;
|
||||
|
||||
private void Update() {
|
||||
|
@ -2,9 +2,23 @@
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
|
||||
/// <summary>
|
||||
/// A utility class to spawn entities into the world based on
|
||||
/// their <see cref="EntityType"/> and .
|
||||
/// </summary>
|
||||
public class Spawner : MonoBehaviour {
|
||||
/// <summary>
|
||||
/// The <see cref="SyncDB"/> this <see cref="Spawner"/> should be using to
|
||||
/// set entities' IDs.
|
||||
/// </summary>
|
||||
public SyncDB SyncDB;
|
||||
/// <summary>
|
||||
/// The <see cref="EntityType.PC"/> prefab.
|
||||
/// </summary>
|
||||
public GameObject PCEntityPrefab;
|
||||
/// <summary>
|
||||
/// The <see cref="EntityType.NPC"/> prefab.
|
||||
/// </summary>
|
||||
public GameObject NPCEntityPrefab;
|
||||
|
||||
/// <summary>
|
||||
@ -12,6 +26,10 @@ public class Spawner : MonoBehaviour {
|
||||
/// </summary>
|
||||
/// <param name="type">Type.</param>
|
||||
/// <param name="position">Position.</param>
|
||||
/// <param name="ids">The ids of the entity's synced components. Should be
|
||||
/// set if they exist already (eg. the server has sent them over). These
|
||||
/// ids should be from <see cref="SyncDB.GetEntityIDs"/>. To create new
|
||||
/// ids, leave as the default (null).</param>
|
||||
public GameObject Spawn(EntityType type, Vector3 position, uint[] ids = null) {
|
||||
GameObject Spawned = null;
|
||||
switch (type) {
|
||||
|
@ -2,6 +2,14 @@
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
|
||||
/// <summary>
|
||||
/// A base class for all syncable components. An instance of
|
||||
/// <see cref="SyncDB"/> will contain all of the game's synced components.
|
||||
/// </summary>
|
||||
public class SyncBase : MonoBehaviour {
|
||||
/// <summary>
|
||||
/// The ID this syncable component can be found with from its parent
|
||||
/// <see cref="SyncDB"/>.
|
||||
/// </summary>
|
||||
public uint ID;
|
||||
}
|
||||
|
@ -3,6 +3,10 @@ using System.Collections.Generic;
|
||||
using System;
|
||||
using UnityEngine;
|
||||
|
||||
/// <summary>
|
||||
/// A database of the game's all syncable components. Syncable components are
|
||||
/// the instances of the subclasses of <see cref="SyncBase"/>.
|
||||
/// </summary>
|
||||
public class SyncDB : MonoBehaviour {
|
||||
private static readonly Type[] SyncableClasses = new Type[]{
|
||||
typeof(Character)
|
||||
@ -11,6 +15,12 @@ public class SyncDB : MonoBehaviour {
|
||||
private uint IDCounter = 0;
|
||||
private Dictionary<uint, SyncBase> Database = new Dictionary<uint, SyncBase>();
|
||||
|
||||
/// <summary>
|
||||
/// Add an entity to the database with the given IDs.
|
||||
/// </summary>
|
||||
/// <param name="gameObject">Game object.</param>
|
||||
/// <param name="ids">The IDs. Should be from <see cref="GetEntityIDs"/> or
|
||||
/// <see cref="GetNewEntityIDs"/>, since the order is important.</param>
|
||||
public void AddEntity(GameObject gameObject, uint[] ids) {
|
||||
int Index = 0;
|
||||
for (int i = 0; i < SyncableClasses.Length; i++) {
|
||||
@ -22,6 +32,15 @@ public class SyncDB : MonoBehaviour {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Makes an ordered list of the given gameobject's syncable components'
|
||||
/// IDs.
|
||||
/// </summary>
|
||||
/// <returns>The IDs.</returns>
|
||||
/// <param name="gameObject">Game object.</param>
|
||||
/// <param name="newIDs">Whether or not new IDs are created.
|
||||
/// <see cref="GetNewEntityIDs"/> is a shorthand for this function with
|
||||
/// this parameter set to true.</param>
|
||||
public uint[] GetEntityIDs(GameObject gameObject, bool newIDs = false) {
|
||||
List<uint> IDs = new List<uint>();
|
||||
for (int i = 0; i < SyncableClasses.Length; i++) {
|
||||
@ -40,14 +59,28 @@ public class SyncDB : MonoBehaviour {
|
||||
return IDArray;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Creates an ordered list of the given gameobject's syncable components'
|
||||
/// IDs. See <see cref="GetEntityIDs"/> for more information.
|
||||
/// </summary>
|
||||
/// <returns>The new IDs.</returns>
|
||||
/// <param name="gameObject">Game object.</param>
|
||||
public uint[] GetNewEntityIDs(GameObject gameObject) {
|
||||
return GetEntityIDs(gameObject, true);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Get a synced component by its ID.
|
||||
/// </summary>
|
||||
/// <param name="id">The ID.</param>
|
||||
public SyncBase Get(uint id) {
|
||||
return Database[id];
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Creates a new ID which isn't in use yet.
|
||||
/// </summary>
|
||||
/// <returns>A new, free ID.</returns>
|
||||
public uint CreateID() {
|
||||
uint ID;
|
||||
try {
|
||||
|
Loading…
Reference in New Issue
Block a user