Added C# interface for Camera and Camera Arm. Added some test scripts
This commit is contained in:
parent
d82bc8833f
commit
f919d95c0b
|
@ -0,0 +1,51 @@
|
||||||
|
#include "SHpch.h"
|
||||||
|
#include "CameraArm.hxx"
|
||||||
|
|
||||||
|
|
||||||
|
namespace SHADE
|
||||||
|
{
|
||||||
|
CameraArm::CameraArm(Entity entity)
|
||||||
|
:Component(entity)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
float CameraArm::Pitch::get()
|
||||||
|
{
|
||||||
|
return (GetNativeComponent()->GetPitch());
|
||||||
|
}
|
||||||
|
|
||||||
|
void CameraArm::Pitch::set(float val)
|
||||||
|
{
|
||||||
|
GetNativeComponent()->SetPitch(val);
|
||||||
|
}
|
||||||
|
float CameraArm::Yaw::get()
|
||||||
|
{
|
||||||
|
return (GetNativeComponent()->GetYaw());
|
||||||
|
}
|
||||||
|
|
||||||
|
void CameraArm::Yaw::set(float val)
|
||||||
|
{
|
||||||
|
GetNativeComponent()->SetYaw(val);
|
||||||
|
}
|
||||||
|
|
||||||
|
float CameraArm::ArmLength::get()
|
||||||
|
{
|
||||||
|
return (GetNativeComponent()->GetArmLength());
|
||||||
|
}
|
||||||
|
|
||||||
|
void CameraArm::ArmLength::set(float val)
|
||||||
|
{
|
||||||
|
GetNativeComponent()->SetArmLength(val);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool CameraArm::LookAtCameraOrigin::get()
|
||||||
|
{
|
||||||
|
return GetNativeComponent()->lookAtCameraOrigin;
|
||||||
|
}
|
||||||
|
|
||||||
|
void CameraArm::LookAtCameraOrigin::set(bool val)
|
||||||
|
{
|
||||||
|
GetNativeComponent()->lookAtCameraOrigin = val;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,40 @@
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
// Project Includes
|
||||||
|
#include "Components/Component.hxx"
|
||||||
|
#include "Math/Vector3.hxx"
|
||||||
|
|
||||||
|
// External Dependencies
|
||||||
|
#include "Camera/SHCameraArmComponent.h"
|
||||||
|
|
||||||
|
|
||||||
|
namespace SHADE
|
||||||
|
{
|
||||||
|
public ref class CameraArm : public Component<SHCameraArmComponent>
|
||||||
|
{
|
||||||
|
internal:
|
||||||
|
CameraArm(Entity entity);
|
||||||
|
public:
|
||||||
|
property float Pitch
|
||||||
|
{
|
||||||
|
float get();
|
||||||
|
void set(float val);
|
||||||
|
}
|
||||||
|
property float Yaw
|
||||||
|
{
|
||||||
|
float get();
|
||||||
|
void set(float val);
|
||||||
|
}
|
||||||
|
property float ArmLength
|
||||||
|
{
|
||||||
|
float get();
|
||||||
|
void set(float val);
|
||||||
|
}
|
||||||
|
property bool LookAtCameraOrigin
|
||||||
|
{
|
||||||
|
bool get();
|
||||||
|
void set(bool val);
|
||||||
|
}
|
||||||
|
|
||||||
|
};
|
||||||
|
}
|
|
@ -33,6 +33,8 @@ of DigiPen Institute of Technology is prohibited.
|
||||||
#include "Components/Transform.hxx"
|
#include "Components/Transform.hxx"
|
||||||
#include "Components\RigidBody.hxx"
|
#include "Components\RigidBody.hxx"
|
||||||
#include "Components\Collider.hxx"
|
#include "Components\Collider.hxx"
|
||||||
|
#include "Components/Camera.hxx"
|
||||||
|
#include "Components/CameraArm.hxx"
|
||||||
|
|
||||||
namespace SHADE
|
namespace SHADE
|
||||||
{
|
{
|
||||||
|
@ -248,6 +250,8 @@ namespace SHADE
|
||||||
componentMap.Add(createComponentSet<SHTransformComponent, Transform>());
|
componentMap.Add(createComponentSet<SHTransformComponent, Transform>());
|
||||||
componentMap.Add(createComponentSet<SHColliderComponent, Collider>());
|
componentMap.Add(createComponentSet<SHColliderComponent, Collider>());
|
||||||
componentMap.Add(createComponentSet<SHRigidBodyComponent, RigidBody>());
|
componentMap.Add(createComponentSet<SHRigidBodyComponent, RigidBody>());
|
||||||
|
componentMap.Add(createComponentSet<SHCameraComponent, Camera>());
|
||||||
|
componentMap.Add(createComponentSet<SHCameraArmComponent, CameraArm>());
|
||||||
}
|
}
|
||||||
|
|
||||||
/*---------------------------------------------------------------------------------*/
|
/*---------------------------------------------------------------------------------*/
|
||||||
|
|
|
@ -26,4 +26,10 @@ namespace SHADE
|
||||||
{
|
{
|
||||||
return SHFrameRateController::GetRawDeltaTime();
|
return SHFrameRateController::GetRawDeltaTime();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
float Time::DeltaTimeF::get()
|
||||||
|
{
|
||||||
|
return static_cast<float>(SHFrameRateController::GetRawDeltaTime());
|
||||||
|
}
|
||||||
}
|
}
|
|
@ -37,5 +37,10 @@ namespace SHADE
|
||||||
{
|
{
|
||||||
double get();
|
double get();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static property float DeltaTimeF
|
||||||
|
{
|
||||||
|
float get();
|
||||||
|
}
|
||||||
};
|
};
|
||||||
}
|
}
|
|
@ -99,4 +99,11 @@ namespace SHADE
|
||||||
return SHInputManager::GetKeyReleasedTime(static_cast<SHInputManager::SH_KEYCODE>(key));
|
return SHInputManager::GetKeyReleasedTime(static_cast<SHInputManager::SH_KEYCODE>(key));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Vector2 Input::GetMouseVelocity()
|
||||||
|
{
|
||||||
|
double velX, velY;
|
||||||
|
SHInputManager::GetMouseVelocity(&velX, &velY);
|
||||||
|
|
||||||
|
return Convert::ToCLI(SHVec2{ (float)velX,(float)velY });
|
||||||
|
}
|
||||||
}
|
}
|
|
@ -321,5 +321,7 @@ namespace SHADE
|
||||||
/// <param name="key">The key to check.</param>
|
/// <param name="key">The key to check.</param>
|
||||||
/// <returns>Time in seconds that the key was held.</returns>
|
/// <returns>Time in seconds that the key was held.</returns>
|
||||||
static double GetMouseReleasedTime(MouseCode mouseButton);
|
static double GetMouseReleasedTime(MouseCode mouseButton);
|
||||||
|
|
||||||
|
static Vector2 GetMouseVelocity();
|
||||||
};
|
};
|
||||||
}
|
}
|
|
@ -0,0 +1,22 @@
|
||||||
|
using System;
|
||||||
|
using SHADE;
|
||||||
|
|
||||||
|
namespace SHADE_Scripting
|
||||||
|
{
|
||||||
|
public class CameraControl :Script
|
||||||
|
{
|
||||||
|
public float turnSpeed = 0.5f;
|
||||||
|
|
||||||
|
public CameraControl(GameObject go) : base(go) { }
|
||||||
|
protected override void update()
|
||||||
|
{
|
||||||
|
//Camera
|
||||||
|
Camera cam = GetComponent<Camera>();
|
||||||
|
Vector2 mouseVel = Input.GetMouseVelocity();
|
||||||
|
|
||||||
|
cam.Pitch -= mouseVel.y * turnSpeed * (float)Time.DeltaTime;
|
||||||
|
cam.Yaw += mouseVel.x * turnSpeed * (float)Time.DeltaTime;
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,9 +0,0 @@
|
||||||
using System;
|
|
||||||
using SHADE;
|
|
||||||
|
|
||||||
namespace SHADE_Scripting
|
|
||||||
{
|
|
||||||
class CameraTest :Script
|
|
||||||
{
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -0,0 +1,55 @@
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using SHADE;
|
||||||
|
|
||||||
|
|
||||||
|
namespace SHADE_Scripting
|
||||||
|
{
|
||||||
|
public class ThirdPersonCamera: Script
|
||||||
|
{
|
||||||
|
|
||||||
|
public float armLength = 4.0f;
|
||||||
|
public float turnSpeedPitch = 0.3f;
|
||||||
|
public float turnSpeedYaw = 0.5f;
|
||||||
|
public float pitchClamp = 45.0f;
|
||||||
|
public ThirdPersonCamera(GameObject go) : base(go) { }
|
||||||
|
|
||||||
|
protected override void awake()
|
||||||
|
{
|
||||||
|
if(!GetComponent<Camera>())
|
||||||
|
{
|
||||||
|
AddComponent<Camera>();
|
||||||
|
}
|
||||||
|
if (!GetComponent<CameraArm>())
|
||||||
|
{
|
||||||
|
AddComponent<CameraArm>();
|
||||||
|
}
|
||||||
|
GetComponent<CameraArm>().ArmLength = armLength;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected override void update()
|
||||||
|
{
|
||||||
|
CameraArm arm = GetComponent<CameraArm>();
|
||||||
|
if(arm)
|
||||||
|
{
|
||||||
|
Vector2 vel = Input.GetMouseVelocity();
|
||||||
|
arm.Pitch -= vel.y * turnSpeedPitch * Time.DeltaTimeF;
|
||||||
|
arm.Yaw += vel.x * turnSpeedYaw * Time.DeltaTimeF;
|
||||||
|
|
||||||
|
if(arm.Pitch > pitchClamp)
|
||||||
|
{
|
||||||
|
arm.Pitch = pitchClamp;
|
||||||
|
}
|
||||||
|
else if(arm.Pitch < -pitchClamp)
|
||||||
|
{
|
||||||
|
arm.Pitch = -pitchClamp;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue