/usr/src/castle-game-engine-4.1.1/x3d/x3dnodes_inventor.inc is in castle-game-engine-src 4.1.1-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 | {
Copyright 2002-2013 Michalis Kamburelis.
This file is part of "Castle Game Engine".
"Castle Game Engine" is free software; see the file COPYING.txt,
included in this distribution, for details about the copyright.
"Castle Game Engine" is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
----------------------------------------------------------------------------
}
{ Inventor nodes that didn't make it into any VRML version. } { }
{$ifdef read_interface}
{ IndexedTriangleMesh (from Inventor 1.0). }
TIndexedTriangleMeshNode_1 = class(TIndexedFacesOrTrianglesNode_1)
class function ClassNodeTypeName: string; override;
procedure CoordPolygons(
State: TX3DGraphTraverseState;
PolygonHandler: TIndexedPolygonHandler); override;
function TexCoord(State: TX3DGraphTraverseState;
out ATexCoord: TX3DNode): boolean; override;
end;
{ RotationXYZ node (from Inventor). It's not in VRML 1.0 spec.
But some invalid VRML 1.0 models use it,
e.g. [http://www-vrl.umich.edu/sel_prj/EECS498/]. }
TRotationXYZNode = class(TAbstractTransformationNode_1)
procedure CreateNode; override;
class function ClassNodeTypeName: string; override;
private FFdAxis: TSFEnum;
public property FdAxis: TSFEnum read FFdAxis;
private FFdAngle: TSFFloat;
public property FdAngle: TSFFloat read FFdAngle;
procedure Transformation(out Matrix, InvertedMatrix: TMatrix4Single); override;
function TransformScale: Single; override;
end;
{$endif read_interface}
{$ifdef read_implementation}
class function TIndexedTriangleMeshNode_1.ClassNodeTypeName: string;
begin
result := 'IndexedTriangleMesh';
end;
function TIndexedTriangleMeshNode_1.TexCoord(State: TX3DGraphTraverseState;
out ATexCoord: TX3DNode): boolean;
begin
Result := true;
ATexCoord := State.LastNodes.TextureCoordinate2;
end;
procedure TRotationXYZNode.CreateNode;
begin
inherited;
FFdAxis := TSFEnum.Create(Self, 'axis' , ['X', 'Y', 'Z'], 0);
FdAxis.ChangesAlways := [chEverything];
Fields.Add(FFdAxis);
FFdAngle := TSFFloat.Create(Self, 'angle', 0);
FdAngle.ChangesAlways := [chEverything];
Fields.Add(FFdAngle);
end;
class function TRotationXYZNode.ClassNodeTypeName: string;
begin
Result := 'RotationXYZ';
end;
procedure TRotationXYZNode.Transformation(
out Matrix, InvertedMatrix: TMatrix4Single);
const
AxisVectors: array[0..2]of TVector3Single =
( (1, 0, 0), (0, 1, 0), (0, 0, 1) );
begin
RotationMatricesRad(FdAngle.Value, AxisVectors[FdAxis.Value],
Matrix, InvertedMatrix);
end;
function TRotationXYZNode.TransformScale: Single;
begin
Result := 1;
end;
procedure RegistedInventorNodes;
begin
NodesManager.RegisterNodeClasses([
TIndexedTriangleMeshNode_1,
TRotationXYZNode
]);
end;
{$endif read_implementation}
|