core/player/BasePlayer.cs
public class BasePlayer : Component {
public static BasePlayer Local {get; set;}
[Property, ReadOnly] public int Index {get; set;} = 0;
[Property, Change(nameof(UpdateMode))] public bool Isometric {get; set;}
[Property, Hide] public GameObject PacCameraRoot {get; set;}
[Property, Hide] public GameObject IsoCameraRoot {get; set;}
[Property, Hide] public GameObject IsoNpcRoot {get; set;}
[Property, Hide] public PlayerInventory Inventory {get; set;}
[Property, Hide] public PlayerMouse Mouse {get; set;}
[Property, Hide] public PlayerPacCamera PacCamera {get; set;}
[Property, Hide] public PlayerIsoCamera IsoCamera {get; set;}
[Property, Hide] public PlayerIsoMovement IsoMovement {get; set;}
[Property, Hide] public IsoEntity IsoEntity {get; set;}
protected override void DrawGizmos() {
GameObject.Name = "PLAYER_"+Index;
base.DrawGizmos();
}
protected override void OnAwake() {
Local = this;
Index = 0;//Scene.GetAllComponents<PlayerProxyBody>().Count();
GameObject.Name = "PLAYER_"+Index;
GameObject.NetworkMode = NetworkMode.Never;
Tags.Add("dynamic");
Spawn.SetOwner(this);
Spawn.GameObject(nameof(PacCameraRoot), "_PAC_CAMERA");
Spawn.GameObject(nameof(IsoCameraRoot), "_ISO_CAMERA");
Spawn.GameObject(nameof(IsoNpcRoot), "_ISO_NPC");
IsoNpcRoot.SetParent(null);
Spawn.Component(nameof(Inventory));
Spawn.Component(nameof(Mouse));
Spawn.Component(nameof(PacCamera), PacCameraRoot);
Spawn.Component(nameof(IsoCamera), IsoCameraRoot);
Spawn.Component(nameof(IsoMovement), IsoNpcRoot);
IsoNpcRoot.Components.Create<SkinnedModelRenderer>().Model = Model.Load("models/characters/player.vmdl");
Spawn.Component(nameof(IsoEntity), IsoNpcRoot);
UpdateMode();
base.OnAwake();
}
public void UpdateMode() {
if (Isometric)
GameObject.SetParent(null);
IsoMovement.Enabled = Isometric;
IsoCameraRoot.Enabled = Isometric;
PacCameraRoot.Enabled = !Isometric;
}
protected override void OnUpdate() {
if (Isometric) {
WorldRotation = Rotation.Identity;
IsoMovement.Update();
IsoCamera.Update();
} else {
PacCamera.Update();
}
base.OnUpdate();
}
}