94 lines
2.5 KiB
C++
94 lines
2.5 KiB
C++
/**
|
|
@file
|
|
@author Dane Johnson <dane@danejohnson.org>
|
|
|
|
@section LICENSE
|
|
|
|
Couch Copyright (C) 2021 Dane Johnson
|
|
|
|
This program comes with ABSOLUTELY NO WARRANTY; without event the
|
|
implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
|
See the GNU General Public License for details at
|
|
https://www.gnu.org/licenses/gpl-3.0.html
|
|
|
|
This is free software, and you are welcome to redistribute it
|
|
under the terms of the GNU General Public License as published
|
|
by the Free Software Foundation; either version 3 of the License,
|
|
or (at your option) any later version.
|
|
|
|
@section DESCRIPTION
|
|
|
|
A spatial is a node with a transform property, i.e. position, scale or rotation.
|
|
They can be instanced on the scene tree as an anchor for some other nodes.
|
|
*/
|
|
#ifndef SPATIAL_H
|
|
#define SPATIAL_H
|
|
|
|
#include "types.h"
|
|
#include "Node.h"
|
|
#include "Transform.h"
|
|
|
|
/**
|
|
Spatial nodes have a transform property. They can be subclassed or instanced
|
|
as an anchor for their children.
|
|
*/
|
|
class Spatial : public Node {
|
|
public:
|
|
virtual Name GetType() const;
|
|
|
|
/**
|
|
Gets the transform property of this spatial
|
|
@return The transform
|
|
*/
|
|
Transform GetTransform();
|
|
/**
|
|
Sets the transform property of this spatial.
|
|
@param transform The transform property
|
|
*/
|
|
void SetTransform(Transform transform);
|
|
/**
|
|
Gets the translation with relation to the world origin
|
|
@returns the global transform
|
|
*/
|
|
Transform GetGlobalTransform();
|
|
/**
|
|
Sets the transform with relation to the world origin
|
|
@param globalTransform The global transform property
|
|
*/
|
|
void SetGlobalTransform(Transform globalTransform);
|
|
|
|
/**
|
|
Directly translates the spatial by offset
|
|
@param offset The offset of the transform operation
|
|
*/
|
|
virtual void Translate(Vector3 offset);
|
|
/**
|
|
Rotates the Camera phi radians about the X axis
|
|
@param phi The amount to rotate in radians
|
|
*/
|
|
void RotateX(float phi);
|
|
/**
|
|
Rotates the Camera phi radians about the Y axis
|
|
@param phi The amount to rotate in radians
|
|
*/
|
|
void RotateY(float phi);
|
|
/**
|
|
Rotates the Camera phi radians about the Z axis
|
|
@param phi The amount to rotate in radians
|
|
*/
|
|
void RotateZ(float phi);
|
|
/**
|
|
Scales the spatial by scale uniformly
|
|
@param scale The amount to scale by.
|
|
*/
|
|
void UniformScale(float scale);
|
|
|
|
virtual Spatial *Create();
|
|
virtual Spatial *Duplicate();
|
|
virtual Spatial *Instance();
|
|
private:
|
|
Transform transform;
|
|
};
|
|
|
|
#endif /* SPATIAL_H */
|