-
Notifications
You must be signed in to change notification settings - Fork 7
/
Copy pathCyclesObject.cs
123 lines (101 loc) · 2.83 KB
/
CyclesObject.cs
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
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
/**
Copyright 2014-2024 Robert McNeel and Associates
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
**/
using ccl;
using System;
using System.Collections.Generic;
namespace RhinoCyclesCore
{
/// <summary>
/// Simple wrapper object to hold mesh related data to be pushed to Cycles.
/// </summary>
public class CyclesObject : IDisposable
{
private bool disposedValue;
public CyclesObject()
{
Visible = true;
CastShadow = true;
OcsFrame = Transform.Identity();
}
public ccl.Object cob { get; set; }
/// <summary>
/// Id of InstanceAncestry
/// </summary>
public uint obid { get; set; }
public int passobid
{
get
{
int passid = (int)(obid & 0x07fff);
return passid;
}
}
/// <summary>
/// Guid of the mesh this object references
/// </summary>
public Tuple<Guid, int> meshid { get; set; }
/// <summary>
/// The transformation matrix for this object.
/// </summary>
public Transform Transform { get; set; }
/// <summary>
/// The OcsFrame for this object.
/// </summary>
public ccl.Transform OcsFrame { get; set; } = ccl.Transform.Identity();
/// <summary>
/// Material CRC (RenderHash)
/// </summary>
public uint matid { get; set; }
/// <summary>
/// Visibility toggle.
/// </summary>
public bool Visible { get; set; }
public uint Shader { get; set; }
public bool CastShadow { get; set; }
/// <summary>
/// Shadow-only toggle.
/// </summary>
public bool IsShadowCatcher { get; set; }
/// <summary>
/// Like CastShadow, but to be used for objects that have an
/// emissive material. Such an object is considered a
/// mesh ligh. Set to true to ensure this light doesn't cast
/// shadows.
/// </summary>
public bool CastNoShadow { get; set; }
/// <summary>
/// Object is clipping object if set to true
/// </summary>
public bool Cutout { get; set; }
/// <summary>
/// Object ignores any clipping object if set to true
/// </summary>
public bool IgnoreCutout { get; set; }
public List<CyclesDecal> Decals { get; set; } = null;
protected virtual void Dispose(bool disposing)
{
if (!disposedValue)
{
// Don't dispose decals here, since they
// are also referenced by CyclesShader instances
// See RH-80480. /Nathan 2024.02.19
disposedValue = true;
}
}
public void Dispose()
{
Dispose(disposing: true);
GC.SuppressFinalize(this);
}
}
}