xcal
基于 C++23 的现代图形渲染引擎
载入中...
搜索中...
未找到
xcal
property
vec.hpp
浏览该文件的文档.
1
#pragma once
2
#include <
xcal/public.h
>
3
4
#include <
xcal/property/core/property.hpp
>
5
#include <
xcmath/mobject/vec.hpp
>
6
7
namespace
xcal::property
{
8
template
<
typename
T,
size_t
N>
9
class
XCAL_API
Vec
:
public
MProperty
{
10
XCAL_PROPERTY_TYPE
(
Vec
)
11
public
:
12
using
data_t
=
xcmath::vec<T, N>
;
13
14
private
:
15
Proxy<data_t>
value_{
this
, T{}};
16
17
public
:
18
template
<
typename
... Args>
19
requires
std::constructible_from<data_t, Args...>
20
// NOLINTNEXTLINE
21
Vec
(Args&&... args) : value_{this, std::forward<Args>(args)...} {}
22
Vec
(
const
Vec
&) =
delete
;
23
Vec
(
Vec
&&) =
delete
;
24
Vec
&
operator=
(
const
Vec
&) =
delete
;
25
Vec
&
operator=
(
Vec
&&) =
delete
;
26
data_t
&
value
() {
return
value_; }
27
const
data_t
&
value
()
const
{
return
value_; }
28
float_t
x
() const
29
requires(N > 0)
30
{
31
return
((
const
data_t
&)value_).x();
32
}
33
float_t
y
() const
34
requires(N > 1)
35
{
36
return
((
const
data_t
&)value_).y();
37
}
38
float_t
z
() const
39
requires(N > 2)
40
{
41
return
((
const
data_t
&)value_).z();
42
}
43
float_t
&
x
()
44
requires
(N > 0)
45
{
46
return
((
data_t
&)value_).x();
47
}
48
float_t
&
y
()
49
requires
(N > 1)
50
{
51
return
((
data_t
&)value_).y();
52
}
53
float_t
&
z
()
54
requires
(N > 2)
55
{
56
return
((
data_t
&)value_).z();
57
}
58
// NOLINTNEXTLINE
59
operator
data_t
&() {
return
value_; }
60
// NOLINTNEXTLINE
61
operator
const
data_t
&()
const
{
return
value_; }
62
63
Vec
&
operator=
(
const
data_t
& v) {
64
value_ = v;
65
return
*
this
;
66
}
67
};
68
}
// namespace xcal::property
xcal::property::MProperty::Proxy
Definition
property.hpp:32
xcal::property::MProperty
Definition
property.hpp:24
xcal::property::Vec
Definition
vec.hpp:9
xcal::property::Vec::z
float_t z() const
Definition
vec.hpp:38
xcal::property::Vec::Vec
Vec(Vec &&)=delete
xcal::property::Vec::operator=
Vec & operator=(const data_t &v)
Definition
vec.hpp:63
xcal::property::Vec::Vec
Vec(const Vec &)=delete
xcal::property::Vec::x
float_t x() const
Definition
vec.hpp:28
xcal::property::Vec::x
float_t & x()
Definition
vec.hpp:43
xcal::property::Vec::operator=
Vec & operator=(const Vec &)=delete
xcal::property::Vec::y
float_t y() const
Definition
vec.hpp:33
xcal::property::Vec::Vec
Vec(Args &&... args)
Definition
vec.hpp:21
xcal::property::Vec::value
data_t & value()
Definition
vec.hpp:26
xcal::property::Vec::value
const data_t & value() const
Definition
vec.hpp:27
xcal::property::Vec::operator=
Vec & operator=(Vec &&)=delete
xcal::property::Vec::z
float_t & z()
Definition
vec.hpp:53
xcal::property::Vec::y
float_t & y()
Definition
vec.hpp:48
xcmath::vec
Vector class template
Definition
vec.hpp:206
xcal::property
Definition
Interpolation.hpp:18
xcal::float_t
float float_t
Definition
public.h:27
property.hpp
XCAL_PROPERTY_TYPE
#define XCAL_PROPERTY_TYPE(type)
Definition
property.hpp:6
public.h
XCAL_API
#define XCAL_API
Definition
public.h:69
vec.hpp
N-dimensional mathematical vector implementation with template metaprogramming support
生成于 2025年 九月 19日 星期五 21:12:12 , 为 xcal使用
1.9.8